GUI英文全称是Graphical User Interface,中文为图形用户接口。
tkinter是一个开放源码的图形接口开发工具,在安装Python时,就已经同时安装此模块了,在使用前只需要导入即可。
importtkinterprint(tkinter.TkVersion)8.6
1. 建立窗口
from tkinter import *root=Tk()
root.mainloop()
通常将使用Tk()方法建立的窗口称为根窗口,默认名称是tk,之后可以在此根窗口中建立许多控件,也可以在此根窗口中建立上层窗口。mainloop()方法让程序继续执行,同时进入等待与处理窗口事件,单击窗口的"关闭"按钮,此程序才会结束。
与窗口相关的方法:方法
说明
title()
可以设置窗口的标题
geometry("widthxheight+x+y")
设置窗口宽width与高height,单位是像素,设定窗口位置
maxsize(width,height)
拖曳时窗口最大的宽和高
minsize(width,height)
拖曳时窗口最小的宽和高
configure(bg="color")
设置窗口的背景颜色
resizable(True,Ture)
可设置是否可更改窗口大小,第一个参数是宽,第二个参数是高,如果要固定窗口宽与高,可以使用resizable(0,0)
state("zoomed")
最大化窗口
iconify()
最小化窗口
iconbitmap("xx.ico")
更改默认窗口图标
root =Tk()
root.title("MyWindow")
root.geometry("300x160+400+200")
root.configure(bg="#33ff33")
root.iconbitmap("mystar.ico")
root.mainloop()
geometry中width和height用x分隔,表示窗口的宽和高,+x是窗口左边距离屏幕左边的距离,如果是-x则是表示窗口右边距离屏幕右边的距离,同理,+y或-y表示窗口上边(下边)距离屏幕上边(下边)的距离。
在tkinter模块中可以使用下列方法获得屏幕的宽度和高度:winfo_screenwidth():屏幕宽度;
winfo_screenheight():屏幕高度。
下面的程序将窗口显示在屏幕中央。
root =Tk()
screenWidth=root.winfo_screenwidth()
screenHeight=root.winfo_screenheight()
w= 300h= 160x= (screenWidth - w) / 2y= (screenHeight -h) / 2root.geometry("%dx%d+%d+%d" %(w,h,x,y))
root.mainloop()
2. tkinter的Widget
Widget可以翻译为控件或组件或部件。窗口建立完成后,下一步就是在窗口内建立控件。
控件Button:按钮;
Canvas:画布;
Checkbutton:多选按钮;
Entry:文本框;
Frame:框架;
Label:标签;
LabelFrame:标签框架;
Listbox:列表框;
Menu:菜单;
Message:消息;
OptionMenu:下拉菜单;
PanedWindow:面板;
Radiobutton:单选按钮;
Scale:尺度;
Scrolbar:滚动条;
Spinbox:可微调输入控件;
Text:文字区域;
Toplevel:上层窗口。
加强版模块tkinter.ttk中新增的Widget:Combobox;
Notebook;
Progressbat;
Separator;
Sizegrip;
Treeview。
Widget的共同属性:Dimensions:大小;
Colors:颜色;
Fonts:字体;
Anchor:锚(位置参考点);
Relief styles:属性边框;
Bitmaps:显示位图;
Cursors:鼠标外形。
Widget的共同方法:Configurationconfig(option=value):Widget属性可以在建立时设置,也可以在程序执行时使用config()重新设置;
cget("option"):取得option参数值;
keys():可以用此方法获得所有该Widget的参数。
Event Processingmainloop():让程序继续执行,同时进入等待与处理窗口事件;
quit():Python Shell窗口结束,但是所建立的窗口继续执行;
update():更新窗口画面。
Event callbacksbind(event,callback):事件绑定;
unbind(event):接触绑定。
Alarm handlersafter(time,callback):间隔指定时间后调用callback()方法。
3. 标签
Label()方法用于在窗口内建立文字或图像标签。Label(父对象,options,…)
常用options参数:anchor:如果空间大于所需时,控制标签的位置,默认是CENTER(居中);√ 3.2
bg或background:背景颜色;√ 3.1
bitmap:使用默认图标当做标签内容;√ 3.6
borderwidth或bd:标签边界宽度,默认为1;
compound:可以设置标签内含图形和文字时,彼此的位置关系;√ 3.7
cursor:当鼠标光标在标签上方时的外形;√ 3.12
fg或foreground:前景颜色;√ 3.1
font:可选择字形、字形样式与大小;√ 3.4
height:标签高度,单位是字符;√ 3.1
image:标签以图形形式呈现;√ 3.10
justify:存在多行文本时最后一行的对齐方式,可取left/center(默认)/right;√ 3.5
padx/pady:标签文字与标签区间的间距,单位是像素;√ 3.9
relief:默认为FLASE,可控制标签的外框;√ 3.8
text:标签文字内容,使用\n可输入多行;√ all
textvariable:可以设置标签以变量的形式显示;
underline:可以设置第几个文字有下划线,从0开始,默认为-1,表示无下划线;
width:标签宽度,单位是字符;√ 3.1
wraplength:文本到多少宽度后换行,单位是像素。√ 3.3
3.1 Color、Dimensions
Widget的共同属性。
bg、fg设置背景、前景色。
width、height的单位是字符。
root =Tk()
root.title("Ex")
root.geometry("200x80")
label= Label(root, text = "I like tkinter", \
bg= "#EF72AA", fg = "white", \
height= 3, width = 20)
label.pack()#包装与定位组件
root.mainloop()
3.2 Anchor
Widget的共同属性。
Anchor是指标签文字在标签区域的输出位置。
比如nw效果如下:
anchor的参数设置也可以使用NW、N、NE、W等大写常数,同时省略字符串的双引号。
3.3 Wraplengthwraplength = 35
效果如下:
3.4 Font
Widget的共同属性。
用于设置文字字形。family:字形,如Helvetica、Times等;
size:字号,单位是像素;
weight:如bold、normal;
slant:如italic、roman;
underline:True、False;
overstrike:True、False。
root =Tk()
root.title("Ex")
label= Label(root, text = "I like tkinter", \