1.简介
Tkinter
是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。
由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如
2.常用控件
Label
(标签,就是界面上显示的字)Entry
(输入框)Button
(按钮,可以绑定各种封装函数)Radiobutton
(单选框)Checkbuttion
(复选框)messagebox
(消息弹出框)Text
(文本编辑框)Listbox
(列表控件)Scrollbar
(滚条控件)
3.控件参数
- title:设置窗口的标题
参数 | 描述 | 实例 |
---|---|---|
title | 窗口标题 | tk.TK().title("xxx") |
geometry | 设置窗口大小,中间不能是*,而是x | tk.TK().geometry("100X100") |
resizable | 设置窗口是否可以变化高(height)、 宽(width),True为可以变化,False为不可变化 | tk.TK().resizable("width=False, height=True") |
- Label:标签
参数 | 描述 | 实例 |
---|---|---|
text | 需要在界面显示的Label标签内容 | Label(root,text=‘xxxxx’) |
height | 组件的高度(所占行数) | Label(root,text=‘xxxxx’,height=2) |
width | 组件的宽度(所占字符个数) | Label(root,text=‘xxxxx’,height=2,width=20) |
fg | 前景字体颜色 | Label(root,text=‘xxxxx’,fg='blue')---显示字体为蓝色 |
bg | 背景字体颜色 | Label(root,text=‘xxxxx’,bg='blue')---显示字体为蓝色 |
justify | 多行文本的对齐方式,可选参数为: LEFT、 CENTER、RIGHT,分别是向左、居中、向右对齐 | Label(root,text=‘xxxxx’,justify=tk.LEFT) |
padx | 文本左右两侧的空格数(默认为1) | Label(root,text=‘xxxxx’,padx=5) |
pady | 文本上下的空格数(默认为1) | Label(root,text=‘xxxxx’,pady=5) |
font | 字体格式和大小 | Label(Label(root,text=‘xxxxx’,font=("微软雅黑", 12)) |
photo | 设置背景图片,事先需要指定图片路径 | photo=tk.PhotoImage(file='指定图片路径')Label(root,text=‘xxxxx’,image=photo) |
compound | 图像背景图位置,可选参数为:botton、top、right、left、center(下、上、右、左、文字覆盖图像) | photo=tk.PhotoImage(file='指定图片路径')Label(root,text=‘xxxxx’,image=photo,compound=tk.center) |
- Button:按钮
参数 | 描述 | 实例 |
---|---|---|
text | 按钮图标显示内容 | Button(root,text='xxxx') |
height | 组件的高度(所占行数) | Button(root,text='xxxx',height=2) |
width | 组件的宽度(所占字符个数) | Button(root,text='xxxx',height=2,width=10) |
fg | 前景字体颜色 | Button(text='xxxx',fg='blue')---显示按钮字体颜色为蓝色 |
bg | 背景字体颜色 | Button(text='xxxx',bg='blue')---显示按钮字体颜色为蓝色 |
activebackground | 按钮按下时的背景颜色 | Button(root,text='xxxx',activebackground='grey') |
activeforeground | 按钮按下时的前景字体颜色 | Button(root,text='xxxx',activeforeground='black') |
justify | 多行文本的对齐方式,可选参数为: LEFT、 CENTER、RIGHT,分别是向左、居中、向右对齐 | Button(root,text=‘xxxxx’,justify=tk.LEFT) |
padx | 文本左右两侧的空格数(默认为1) | Button(root,text=‘xxxxx’,padx=5) |
pady | 文本上下的空格数(默认为1) | Button(root,text=‘xxxxx’,pady=5) |
command | 按钮触发执行的命令(函数) | Button(root,text='xxxx',command=函数) |
- Entry:输入框
参数 | 描述 | 实例 |
---|---|---|
width | 组件的宽度(所占字符个数) | Entry(root,width=20) |
fg | 前景字体颜色 | Entry(root,fg='blue') |
bg | 背景字体颜色 | Entry(root,bg='blue') |
show | 将Entry框中的文本替换为指定字符,用于输入密码等,如设置 show="*" | Entry(root,show="*") |
state | 设置组件状态,默认为normal,可设置为:disabled—禁用组件,readonly—只读 | Entry(root,state=readonly) |
textvariable | 指定变量,需要事先定义一个变量,在Entry进行绑定获取变量的值 | text=tk.StringVar() Entry(root,textvariable=text) |
- Radiobutton:单选框
参数 | 描述 | 实例 |
---|---|---|
text | 单选框文本显示内容 | Radiobutton(root,text='xxxx') |
variable | 单选框索引变量,通过变量的值确定哪个单选框被选中。一组单选框使用同一个索引变量,需要事先设定一个变量 | color=tk.StringVar() Radiobutton(root,variable=color) |
value | 单选框选中时设定变量的值 | color=tk.StringVar()Radiobutton(root,variable=color,value='red' |
command | 单选框选中时执行的命令(函数) | color=tk.StringVar()Radiobutton(root,variable=color,value='red',command=函数) |
- Checkbuttion:复选框
参数 | 描述 | 实例 |
---|---|---|
text | 复选框显示的文本 | Checkbutton(root,text='xxxx') |
variable | 复选框索引变量,通过变量的值确定哪些复选框被选中。每个复选框使用不同的变量,使复选框之间相互独立,事先需要定义不同的变量 | typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod) |
onvalue | 复选框选中(有效)时变量的值,可以通过计算值来判断分支不同的效果,计算值由自己设定 | typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod,onvalue=1) |
offvalue | 复选框未选中(无效)时变量的值,可以通过计算值来判断分支不同的效果,一般设置为0 | typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod,onvalue=1,offvalue=0) |
command | 复选框选中时执行的命令(函数) | typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod,onvalue=1,offvalue=0,command=函数) |
- Text:文本框
参数 | 描述 | 实例 | 备注 |
---|---|---|---|
t.insert(mark, 内容) | 插入文本信息,mark可以是行号,或者特殊标识 | t=tk.Text()t.insert(END,'插入的文本信息') | INSERT:光标 的插入点, CURRENT:鼠标的当前位置所对应的字符 ,END:Textbuffer的最后一个字符,SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常,SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发异常 |
t.delete(mark1, mark2) | 删除文本信息 | INSERT:光标的插入点, CURRENT:鼠标的当前位置所对应的字符 ,END:Textbuffer的最后一个字符,SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常,SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发异常 |
- ListBox:列表控件
参数 | 描述 |
---|---|
master | 代表了父窗口 |
bg | 背景色,如bg=”red”, bg="#FF56EF" |
fg | 前景色,如fg=”red”, fg="#FF56EF" |
height | 设置显示高度、如果未设置此项,其大小以适应内容标签 |
width | 设置显示宽度,如果未设置此项,其大小以适应内容标签 |
status | 设置组件状态;正常(normal),激活(active),禁用(disabled) |
bd | 设置Button的边框大小;bd(bordwidth)缺省为1或2个像素 |
selectmode | 选择模式,MULTIPLE:多选 BROWSE:通过鼠标的移动选择 EXTENDED:shift和ctrl配合使用 |
listvariable | 设置listvariable属性 |
relief | 指定外观装饰边界附近的标签,默认是平的,可以设置的参数:flat、groove、raised、ridge、solid、sunken |
常用函数
函数 | 描述 |
---|---|
insert | 追加item,如listbox.insert(0,"addBox1","addBox2") |
delete | 删除item,如listbox.delete(3,4),删除全部(0,END) |
select_set | 选中,如listbox.select_set(0,2) |
select_clear | 取消选中如listbox.select_clear(0,1) |
get | 返回制定索引的项值,如listbox.get(1);返回多个项值,返回元组,如listbox.get(0,2);返回当前选中项的索引listbox.curselection() |
curselection() | 返回当前选中项的索引,如listbox.curselection() |
selection_includes | 判断当前选中的项目中是否包含某项,如listbox.selection_includes(4) |
消息弹出框
属性 | 描述 | 举例 |
---|---|---|
showinfo | info信息提示,弹出提示框 | msgbox.showinfo("INFO","Showinfo test"),INFO是提示框title,Showinfo test是提示框内容 |
showwarning | warning警告信息提示,弹出警告框 | 框 msgbox.showwarning("WARNING","Warning test"),WARNING是警告框title,Warning test是警告框内容 |
showerrot | error错误信息提示,弹出错误框 | msgbox.showerror("ERROR","Error test"),ERROR是错误框title,Error test是错误框内容 |
askquestion | 提问窗口提示 | msgbox.askquestion("Question","Askquestion test") |
askokcancel | 确定与取消窗口提示 | msgbox.askokcancel("OkCancel","Askokcancel test") |
askretrycancel | 确定与取消窗口提示 | msgbox.askretrycancel("Retry","Askretrycancel test") |
askretrycancel | 重试与取消窗口提示 | msgbox.askretrycancel("Retry","Askretrycancel test") |
4.构建框架
-
frame:
内嵌框架,可以在一个图形界面中设定多个frame框架,也可以在frame再次嵌套frame
frame=tk.Frame(父类框架)
frame.pack()
- pack属性:
属性 | 描述 | 备注 | 其他 |
---|---|---|---|
fill | 设置组件是否向水平或垂直方向填充,包含X、Y、BOTH、NONE | fill = X(水平方向填充) fill = Y(垂直方向填充)fill = BOTH(水平和垂直)NONE 不填充 | |
expand | 设置组件是否展开,当值为YES时,side选项无效。组件显示在父容器中心位置;若fill选项为BOTH,则填充父组件的剩余空间。它表示某个控件在fill那个方向,要不要把空白的地方分配给它 | YES 、NO(1、0) | 若expand=True或者expand=1,表示在fill那个方向,把空白处都分给这个控件,让它尽量占满。若expand=False或者expand=0,表示在fill那个方向,有空也不给它。 |
side | 设置组件的对齐方式 | LEFT、TOP、RIGHT、BOTTOM | 值为左、上、右、下 |
ipadx、ipady | 设置x方向(或者y方向)内部间隙(子组件之间的间隔),它表示某个控件的内边距,即控件边缘和这个控件内容(文字图片什么的)的间距 | 可设置数值,默认是0 | 非负整数,单位为像素 |
padx、pady | 设置x方向(或者y方向)外部间隙(与之并列的组件之间的间隔),它表示某个控件的外边距,即控件边缘和这个控件所在容器之间的间距 | 可设置数值,默认是0 | 非负整数,单位为像素 |
anchor | 锚选项,当可用空间大于所需求的尺寸时,决定组件被放置于容器的何处,它表示某个控件在容器里的摆放方式,是左还是右,是上还是下 | N、E、S、W、NW、NE、SW、SE、CENTER(默认值为CENTER) | 表示八个方向以及中心 |
- grid属性:
属性 | 描述 | 举例 |
---|---|---|
row,column | 它表示某个控件要放在第几行网格或第几列网格,下标都是从0开始计的 | xxx.grid(column=1,row=1) |
rowspan,columnspan | 它表示某个控件将会竖着跨几行或横着跨几列,默认都是1 | xxx.grid(column=1,row=1,columnspan=2)xxx.grid(column=1,row=1,rowspan=2) |
padx,pady | 它表示某个控件的外边距,即控件边缘和这个控件所在容器之间的间距,单位是像素 | xxx.grid(column=1,row=1,padx=10)xxx.grid(column=1,row=1,pady=10) |
ipadx,ipady | 它表示某个控件的内边距,即控件边缘和这个控件内容(文字图片什么的)的间距,单位是像素 | xxx.grid(column=1,row=1,ipadx=10)xxx.grid(column=1,row=1,ipady=10) |
sticky | 它表示某个控件在网格里的摆放方式,是左还是右,是上还是下,即使窗口被拉大也会按照指定方向对齐 | 若sticky=N,表示North,尽可能往北面/上面停靠若sticky=S,表示South,尽可能往南面/下面停靠。若sticky=W,表示West,尽可能往西边/左边停靠。若sticky=E,表示East,尽可能往东边/右边停靠。若sticky=NS,表示NorthSouth,尽可能往南北方向/上下拉伸。若sticky=EW,表示EastWest,尽可能往东西方向/左右拉伸。若sticky=CENTER,尽可能往中心停靠。 |