GUI: Graphical User Interface 图形用户接口
from tkinter import *
列出tkinter版本
import tkinter print(tkinter.TkVersion)
建立窗口
通常将使用Tk( )方法建立的窗口称为根窗口,之后可以在此根窗口中建立许多控件,也可以在此根窗口中建立上层窗口。
建立空白窗口,窗口默认名称是tk
from tkinter import * root = Tk() root.mainloop()
窗口大小是默认大小,当窗口出现后,可以拖曳移动窗口或更改窗口大小
在GUI程序设计中,有时候也将上述所建立的窗口(window)称为容器(container)。
窗口属性的设置
与窗口相关的方法
设置窗口标题为MyWindow,同时设置宽是300,高是160
from tkinter import * root = Tk() root.title("MyWindow") root.geometry("300x160") root.configure(bg="yellow") root.mainloop()
除了可以使用名称直接设置色彩,还可以使用十六进制方式设置色彩RGB,其中每个色彩用两个十六进制数字表示。
使用mystar.ico更改系统默认的图标,同时使用另一种更改背景颜色的方法。
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是窗口下边距离屏幕下边的距离
获得屏幕的宽度和高度
屏幕 不是 窗口
root.winfo_screenwidth() root.winfo_screenheight()
设计窗口时将此窗口放在屏幕中央
from tkinter import * root = Tk() screenWidth = root.winfo_screenwidth() screenHeight = root.winfo_screenheight() w = 300 h = 160 x = (screenWidth -w)/2 y = (screenHeight-h)/2 root.geometry("%dx%d+%d+%d"%(w,h,x,y)) root.mainloop()
tkinter的Widget
Widget可以翻译为控件或组件或部件。
窗口建立完成后,下一步是在窗口内建立控件,将这些控件统称为Widget。
- Button(按钮)
- Canvas(画布)
- Checkbutton(多选按钮)
- Entry(文本框)
- Frame(框架)
- Label(标签)
- LabelFrame(标签框架)
- Listbox(列表框)
- Menu(菜单)
- MenuButton(菜单按钮)
- Message(消息)
- OptionMenu(下拉式菜单)
- PanedWindow(面板)
- Radiobutton(单选按钮)
- Scale(尺度)
- Scrollbar(滚动条)
- Spinbox(可微调输入控件)
- Text(文字区域)
- Toplevel(上层窗口)
Widget的共同属性
- Dimensions:大小
- Colors:颜色
- Fonts:字形
- Anchor:锚(位置参考点)
- Relief styles:属性边框
- Bitmaps:显示位图
- Cursors:鼠标外形
Widget的共同方法
- Configuration
- config(option=value)
Widget属性可以在建立时设置,也可以在程序执行时使用config( )重新设置 - cget(“option”)
取得option参数值 - keys( )
可以用此方法获得所有该Widget的参数
- Event Processing
- mainloop( )
让程序继续执行,同时进入等待与处理窗口事件 - quit( )
Python Shell窗口结束,但是所建窗口继续执行 - update( )
更新窗口画面
- Event callbacks
- bind(event,callback)
事件绑定 - unbind(event)
解除绑定
- Alarm handlers
- after(time,callback)
间隔指定时间后调用callback( )方法
加强版的tkinter模块
tkinter在后来也推出了加强版的模块,称为tkinter.ttk,有时简称ttk
ttk模块新增的Widget
- Combobox
- Notebook
- Progressbar
- Separator
- Sizegrip 可以拖曳最上层窗口右下方更改最上层窗口的大小。
- Treeview
导入模块
from tkinter import ttk
如果使用下列方式导入ttk,可以覆盖原先tkinter的控件:
from tkinter import * from tkiner.ttk import *
使用ttk可以有更好的外观,而且也可以跨平台使用,不过并没有100%兼容
例如,fg、bg参数或一些外观相关的参数tk和ttk是不相同。
ttk使用的是ttk.Style类别。
RGB色彩表