GUI英文全称是Graphical User Interface,中文为图形用户接口。
tkinter是pythonGUI编程的一个库。
主要分为三步,
- 首先建立一个窗口(设置参数),
- 然后在窗口上放置组件(文本框、按钮、菜单,滚动条之类的),
- 还有就是对组件的位置布局。
一、建立窗口
通常将使用Tk( )方法建立的窗口称为根窗口,之后可以在此根窗口中建立许多控件,也可以在此根窗口中建立上层窗口。
mainloop( )方法可以让程序继续执行,同时进入等待与处理窗口事件,单击窗口右上方的“关闭”按钮,此程序才会结束。
from tkinter import *
root = Tk()
root.mainloop()
注 在GUI程序设计中,有时候也将上述所建立的窗口(window)称为容器(container)。
窗口设置
背景颜色
除了可以使用名称直接设置色彩,还可以使用十六进制方式设置色彩RGB,其中每个色彩用两个十六进制数字表示。
from tkinter import *
root = Tk()
root.configure(bg='#00ff00') # 背景色
root.iconbitmap('mystar.ico') # 图标
root.mainloop()
窗口的位置和大小
geometry( )方法除了可以设置窗口的大小,也可以设置窗口的位置,此时它的语法格式如下。
geometry(widthxheight+x+y)
上述widthxheight已说明是窗口的宽和高,
width与height用x分隔。
“+x”表示x是窗口左边距离屏幕左边的距离,
如果是“-x”,则表示x是窗口右边距离屏幕右边的距离。
“+y”表示y是窗口上边距离屏幕上边的距离,
如果是“-y”则表示y是窗口下边距离屏幕下边的距离。
from tkinter import *
root = Tk()
root.geometry("300x160+400+200")
root.configure(bg='#00ff00')
root.mainloop()
在tkinter模块中可以使用下列方法获得屏幕的宽度和高度。
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
# 将窗口放在屏幕中间
from tkinter import *
root = Tk()
screenwidth = root.winfo_screenwidth()
print(screenwidth)
screenheight = root.winfo_screenheight()
print(screenheight)
wid = 300
hei = 160
x = int((screenwidth-wid)/2)
y = int((screenheight-hei)/2)
root.geometry(f'{wid}x{hei}+{x}+{y}')
root.mainloop()
二、tkinter的Widget
Widget可以翻译为控件或组件或部件。窗口建立完成后,下一步是在窗口内建立控件,我们将这些控件统称为Widget。
(1)Button(按钮)
(2)Canvas(画布)
(3)Checkbutton(多选按钮):
(4)Entry(文本框)
(5)Frame(框架)
(6)Label(标签):
(7)LabelFrame(标签框架)
(8)Listbox(列表框)
(9)Menu(菜单):
(10)MenuButton(菜单按钮):这个是过时的控件,已经被Menu( )取代。
(11)Message(消息)
(12)OptionMenu(下拉式菜单)
(13)PanedWindow(面板)
(14)Radiobutton(单选按钮)
(15)Scale(尺度)
(16)Scrollbar(滚动条):
(17)Spinbox(可微调输入控件)
(18)Text(文字区域):(18)Text(文字区域):
tkinter在后来也推出了加强版的模块,称为tkinter.ttk,有时简称ttk,
这个模块中有17个Widget。下列是ttk模块新增的**Widget。
(1)Combobox:(2)Notebook:(3)Progressbar:
(4)Separator:(5)Sizegrip:(6)Treeview:
导入上述模块可以使用下列方式。
from tkinter import ttk
- 使用ttk可以有更好的外观,而且也可以跨平台使用,不过并没有100%兼容。
- 例如,fg、bg参数或一些外观相关的参数tk和ttk是不相同。
- ttk使用的是ttk.Style类别。
Widget的共同属性
Dimensions:大小,
Colors:颜色,
Fonts:字形,
Anchor:锚(位置参考点),
Relief styles:属性边框,
Bitmaps:显示位图,
Cursors:鼠标外形
Widget的共同方法
Configuration
- (1)config(option=value):Widget属性可以在建立时设置,也可以在程序执行时使用config( )重新设置,
- (2)cget("option"):取得option参数值,
- (3)keys( ):可以用此方法获得所有该Widget的参数,
Event Processing
- (1)mainloop( ):让程序继续执行,同时进入等待与处理窗口事件,相
- (2)quit( ):Python Shell窗口结束,但是所建窗口继续执行,
- (3)update( ):更新窗口画面,
Event callbacks
- (1)bind(event,callback):事件绑定,
- (2)unbind(event):解除绑定,
Alarm handlers
- after(time,callback):间隔指定时间后调用callback( )方法
窗口控件配置管理员
一个实用的程序中一定是一个窗口含有多个Widget控件,
这时就会牵涉应如何将这些Widget控件配置到容器或窗口内。
在设计GUI程序时,可以使用三种方法包装和定位各组件在容器或窗口内的位置,
这三个方法又称窗口控件配置管理员(Widget Layout Manager)。
(1)pack方法: (2)grid方法: (3)place方法:
具体怎么配置,再去查