最近用tkinter+pyinstaller+python完成了一个小工具的项目,在过程当中对tkinter做了一定的了解,以此作为记录,方便日后进行查阅,也希望对各位论坛朋友有帮助。

一、tkinter简介

      tkinter是python实现gui图形界面的一个库,同时还有wxpython以及qt(本人技术还有待提高,目前就只会点tkinter,哈哈)。在我个人使用tkinter来写gui工具之后,我觉得tkinter还是蛮好理解的。

       tkinter包含了几种常用类型的控件,包括Label(标签,就是界面上显示的字)、Entry(输入框)、Button(按钮,可以绑定各种封装函数)、Radiobutton(单选框)、Checkbuttion(复选框)、messagebox(消息弹出框)、Text(文本编辑框)、Listbox(列表控件)、Scrollbar(滚条控件)等。下面会进行一些属性参数的总结。

二、tkinter各类控件参数总结

1、title:设置窗口的标题

 

属性

属性简析

实例

title

设置窗口标题

title(‘xxxxx’)

geometry

设置窗口大小,中间不能是*,而是x

geometry('200x100')

resizable

设置窗口是否可以变化高(height)、 宽(width),True为可以变化,False为不可变化

resizable(width=False, height=True)

 

 

2、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=‘red’)---显示背景为红色

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(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=center)

3、Button:按钮

 

 

属性

属性简析

实例

text

按钮图标显示内容

Button(root,text='xxxx')

height

组件的高度(所占行数)

Button(root,text='xxxx',height=2)

width

组件的宽度(所占字符个数)

Button(root,text='xxxx',width=20)

fg

前景字体颜色

Button(text='xxxx',fg='blue')---显示按钮字体颜色为蓝色

bg

背景颜色

Button(root,text='xxxx',bg='red')---显示按钮背景为红色

activebackground

按钮按下时的背景颜色

Button(root,text='xxxx',activebackground='grey')

activeforeground

按钮按下时的前景字体颜色

Button(root,text='xxxx',activeforeground='white')

justify

多行文本的对齐方式,可选参数为: LEFT、 CENTER、RIGHT,分别是向左、居中、向右对齐

Button(root,text=‘xxxxx’,justify=tk.LEFT)

padx

文本左右两侧的空格数(默认为1)

Button(root,text='xxxx',padx=10)

pady

文本上下两侧的空格数(默认为1)

Button(root,text='xxxx',pady=10)

command

按钮触发执行的命令(函数)

Button(root,text='xxxx',command=函数)

4、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)

 

属性

属性简析

实例

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=函数)

 

属性

属性简析

实例

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=函数)


属性

属性简析

实例

备注

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:选中文本域的最后一个字符,如果没有选中区域则会引发异常

用法
8.1、创建:lb = ListBox(根对象, [属性列表])
8.2、绑定变量 var=StringVar()          

8.3、lb=ListBox(根对象, listvariable = var)
8.4、得到列表中的所有值   var.get()
8.5、设置列表中的所有值   var.set((item1, item2, .....))
8.6、添加:lb.insert(item)
8.7、删除:lb.delete(item,...)
8.8、绑定事件 lb.bind('<ButtonRelease-1>', 函数)
8.9、获得所选中的选项 lbl.get(lb.curselection())

9、Scrollbar:滚条

后续更新

三、tkinter构建gui框架参数

1、frame:

内嵌框架,可以在一个图形界面中设定多个frame框架,也可以在frame再次嵌套frame

frame=tk.Frame(父类框架)

frame.pack()

2、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)

表示八个方向以及中心

3、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,尽可能往中心停靠。

四、消息弹出框messagebox(在这里将messagebox简称为msgbox)

消息弹出框用于info、warning、error提示框的弹出使用的,我们可以根据自己的需求来使用

 

属性

属性简介

实例

showinfo

info信息提示,弹出提示框

msgbox.showinfo("INFO","Showinfo test"),INFO是提示框title,Showinfo test是提示框内容

showwarning

warning警告信息提示,弹出警告框

msgbox.showwarning("WARNING","Warning test"),WARNING是警告框title,Warning test是警告框内容

showerror

error错误信息提示,弹出错误框

msgbox.showerror("ERROR","Error test"),ERROR是错误框title,Error test是错误框内容

askquestion

提问窗口提示

msgbox.askquestion("Question","Askquestion test")

askokcancel

确定与取消窗口提示

msgbox.askokcancel("OkCancel","Askokcancel test")

askyesno

确定与取消窗口提示

msgbox.askretrycancel("Retry","Askretrycancel test")

askretrycancel

重试与取消窗口提示

msgbox.askretrycancel("Retry","Askretrycancel test")