tkinter的定义

tkinter是python自带的gui(用户交互界面)库,对图形图像处理库tk的封装。

组件:组成界面的构成内容就是组件。 按钮,文本输入框,滚动条,菜单,列表。。。
窗口:一个软件的矩形区域

界面开发的最小内容

1
2
3
4
5
6
7
8
9
10
#导入tkinter库
import tkinter

#最简单的界面
#创建主窗口对象
root = tkinter.Tk()
root.minsize(500,500)

#将主窗口加入消息循环
root.mainloop()

组件的摆放方式

  1. pack()方式 ->方向/方位摆放方法
1
2
3
4
5
6
side  		设置组件相对于父组件的摆放位置
ipadx,ipady 设置组件的内部间距
padx,pady 设置多个组件之间的外部间距
expand 设置side是否失效

注意:仅仅使用pack无法实现表格方式,必须借助后面的Frame组件才可以实现,非常复杂。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#创建组件要在创建窗口并定义后,窗口加入消息窗口前
#创建组件1
btn1 = tkinter.Button(root,text = '按钮1')
btn1.pack(ipadx = 20)
#创建组件2
btn2 = tkinter.Button(root,text = '按钮2')
btn2.pack(ipady = 20)
#创建组件3
btn3 = tkinter.Button(root,text = '按钮3')
btn3.pack(padx = 50)
#创建组件4
btn4 = tkinter.Button(root,text = '按钮4')
btn4.pack(pady = 50)

#创建一个按钮组件(在内存中创建)
btn = tkinter.Button(root,text = '屠龙宝刀,点击就送')
#摆放组件
btn.pack(fill = 'x')#该组件占据水平方向的最大位置,默认在顶部
btn.pack(fill = 'y',side = 'left')#该组件占据垂直方向的最大位置
btn.pack(expand = 'yes',fill = 'both')#该组件占据垂直和水平方向的最大位置
  1. grid()方式 ->网格摆放方法
1
2
3
4
5
6
row  			设置行数 默认为0
column 设置列数 默认为0
rowspan 设置跨行数量
cloumnspan 设置跨列的数量
ipadx,ipady 设置组件内部间距
padx,pady 设置多个组件之间的外部间距
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#创建组件
btn1 = tkinter.Button(root,text = '按钮1')
btn1.grid(row = 0,column = 0)
#创建组件
btn2 = tkinter.Button(root,text = '按钮2')
btn2.grid(row = 1,column = 0)
#创建组件
btn3 = tkinter.Button(root,text = '按钮3')
btn3.grid(row = 0,column = 1)
#创建组件
btn4 = tkinter.Button(root,text = '按钮4')
btn4.grid(row = 1,column = 1)
#创建组件
btn0 = tkinter.Button(root,text = '按钮0')
btn0.grid(row = 2,column = 0,columnspan = 2,ipadx = 20)
#创建组件
btnd = tkinter.Button(root,text = '按钮=')
btnd.grid(row = 0,column = 2,rowspan = 2,ipady = 16)
  • place()方式 ->定位摆放方法
1
2
3
4
5
6
7
8
9
10
11
12
绝对定位布局:
x 设置距离左上角的水平长度 单位 都是像素
y 设置距离左上角的垂直高度 单位 都是像素
width 设置组件所占据的宽度 单位 都是像素
height 设置组件所占据的宽度 单位 都是像素

相对定位布局:
relx 设置距离左上角的水平长度(取值0~1)
rely 设置距离左上角的垂直高度(取值0~1)
relwidth 设置组件所占据的宽度(取值0~1)
relheight 设置组件所占据的宽度(取值0~1)
以上属性设置都是相对于界面宽度或者高度的百分比,可以根据界面的带下改变而改变~!
1
2
3
4
5
6
7
8
9
#创建组件
btn1 = tkinter.Button(root,text = '按钮1')
btn1.place(x = 100 ,y = 20,width= 50,height = 50)
#创建组件
btn2 = tkinter.Button(root,text = '按钮2')
btn2.place(x = 200 ,y = 50,width = 300,height = 30)
#创建组件
btn1 = tkinter.Button(root,text = '按钮1')
btn1.place(relx = 0.2,rely = 0.1,relwidth = 0.1,relheight = 0.1)

组件的基本属性

  • 界面的大小
1
2
3
root.minsize(500,500) #最小大小
#设置界面大小大小
root.geometry('300x400')
  • 背景颜色
1
2
3
4
5
6
7
#颜色单词
btn3 = tkinter.Button(root,text='颜色',bg='gold')
btn3.pack()

#hex颜色模式 #红色绿色蓝色 0-255 ->> 使用十六进制
btn4 = tkinter.Button(root,text='颜色',bg='#ff0000')
btn4.pack()
  • 字体
1
2
btn5  = tkinter.Button(root,text='字体',font = ('黑体',40,'bold','italic'))#字体  大小  粗体  斜体
btn5.pack()
  • 锚点
1
2
btn6  = tkinter.Button(root,text='锚点',anchor='sw')
btn6.pack(ipadx = 20, ipady = 20)
  • 三维效果
1
2
btn7  = tkinter.Button(root,text='3',relief= tkinter.FLAT)
btn7.pack()
  • 位图
1
2
btn8  = tkinter.Button(root,text='位图',bitmap = 'question')
btn8.pack()
  • 鼠标样式
1
2
btn9  = tkinter.Button(root,text='鼠标',cursor='heart')
btn9.pack(ipadx=30,ipady=20)

图片设置

  • 将图片设置为图像对象
1
2
3
long = tkinter.PhotoImage(file = 'long.gif')
btn10 = tkinter.Button(root,text='图片',image=long)
btn10.pack()

Button组件

1
2
3
4
width 设置按钮的宽度 1/2 汉字或者数字大小 不推荐使用
height 字符的大小 不推荐使用
btn1= tkinter.Button(root,text='按钮',bg='red',fg='yellow',font=('楷体',20,'italic'),height = 4,width = 10)
btn1.pack()
1
2
3
justify
btn2 = tkinter.Button(root,text='孙悟空\n大闹天空',justify='right')
btn2.pack()
1
2
3
4
state 将此选项设置tkinter.DISABLED为灰色按钮并使其无响应。tkinter.ACTIVE鼠标悬停时有值。默认是tkinter.NORMAL。
bd 边框粗细
btn3 = tkinter.Button(root,text='按钮',state='normal',bd=50)
btn3.pack()

Canvas组件

1
2
3
4
5
canvas = tkinter.Canvas(root,bg='white')
canvas.pack()

#画布中回值长方形
canvas.create_rectangle(20,20,100,100,fill='red',outline='yellow')

Checkbutton组件

1
2
3
4
5
6
7
8
9
10
11
12
13
#设置显示内容tkinter变量
text = tkinter.StringVar()
#设置内容
text.set('同意嫁给你')
#设置复选框勾选与否的值
result = tkinter.IntVar()

#设置操作checkbutton的方法
def func():
print(result.get())

checkbutton = tkinter.Checkbutton(root,textvariable=text,variable=result,command=func,onvalue=66,offvalue=77)
checkbutton.pack()

entry组件

1
2
3
4
5
6
7
8
#创建组件
#用户名
username = tkinter.Entry(root,width=50,bg='yellow',fg='red')
username.pack()

#密码
password = tkinter.Entry(root,show='*')
password.pack()