GUI(Graphics User Interface)使用图形用户界面编程,快速实现图形界面和用户的交互。(早期的都是基于控制台的程序,用户通过控制台和程序交互)。使用的模块(库文件):wxPython库和PyQT库文件
图形界面的是由一个个组件组成的,如图搭积木般拼装在一起,有的可以放其他的组件的组件就是容器
tkinter(TK interface)是Python的标准GUI库,支持跨平台的GUI程序开发,tkinter适合小型的GUI程序编写,也适合初学者学习GUI编程。
1>.通过类TK的无参构造方法函数
2>.在主窗口中,添加各种可视化组件,如按钮(Button)等等
3>.通过几何布局管理器,管理组件大小和位置
4>.事件绑定(如:单击事件等)
代码如下(示例):
#导入tkinter的库文件
from tkinter import *
from tkinter import messagebox
#创建根窗口
root = Tk()
#添加各种组件(按钮)
btn1 = Button(root)
#设置button的文字
btn1["text"]("请点我")
#设置几何布局
btn1.pack()
#创建事件方法
def click_bt(e):
messagebox.showinfo("点击事件","点击完成")
print('点击事件触发')
#组件绑定绑定事件
btn1.bind("" ,clikc_bt)
#使窗口持续运行
root.mainloop()
通过如下方法设置根窗口:
方法 | 介绍 |
---|---|
title() | 设置窗口框体名称 |
resizable() | 设置窗口框体可调性 |
geometry() | 设置主窗体大小,接收一个"宽x高+水平坐标+竖直坐标"的字符串 |
quit() | 退出 |
update() | 刷新页面 |
root = Tk()
#设置窗口标题
root.title('tkinterDemo')
#设置窗口大小和位置
root.geometry("300x400+200+200")
常用组件列表:
Tkinte中r类名 | 中文名称 | 介绍 |
---|---|---|
Toplevel | 顶层 | 容器,为其他组件提供单独容器,类似窗口 |
Button | 按钮 | 按钮组件 |
Canvas | 画布 | 提供绘图功能,直线,矩形等 |
Checkbutton | 复选框 | 提供用户勾选的复选框 |
Entry | 单行输入框 | 可进行单行输入 |
Frame | 容器 | 组织其他GUI组件 |
Label | 标签 | 显示不可编辑文本或图标 |
LabelFrame | 容器 | 可添加标题的容器组件 |
Listbox | 列表框 | 列出多个选项,看进行选择 |
Menu | 菜单 | 菜单组件 |
Menubutton | 菜单按钮 | 包含菜单的按钮(下拉式,层叠式等) |
OpiontMenu | 菜单按钮 | Menubutton子类,可通过按钮打开菜单 |
Message | 消息框 | 可显示多行文本,类似标签 |
Label标签属性:
width,height | 宽,高 |
---|---|
font | 指定字体和大小 |
image | Label显示图像,仅支持gif格式 |
fg和bg | 前景色和背景色 |
justify | 多行文字对齐(left/center/right) |
pack()方法可接收参数,以调整组件的布局属性。pack()方法常用的布局属性如下:
属性 | 说明 |
---|---|
expand | 设置组件的填充方式,True组件进行扩充填充 |
fill | 设置组件是否填充额外空间,取值为none、x、y、both |
side | 设置组件的分布式布局,取值为TOP(默认)、BOTTOM、LEFT或RIGHT |
grid布局将父组件分割成一个二维表格,子组件放置在由行/列确定的单元格中,可以跨越多行/列;grid布局中的列宽由列中最宽单元格确定。
属性 | 说明 |
---|---|
row | 表示组件所在行 |
column | 表示组件所在列 |
rowspan | 表示组件占据的行数 |
place布局可以将组件放在一个特定位置。分为绝对布局和相对布局,与pack和grid相比place更加灵活。通过组件的place()方法可以实现place布局管理,常用属性:
属性 | 说明 |
---|---|
anchor | 组件其他选项的确切位置 |
relx,rely | 相对窗口宽度和高度位置,取值范围[0,1.0] |
x,y | 绝对布局的坐标(px) |
tkinter中将用户操作称为事件,如点击鼠标,移动鼠标,键盘按下等等
程序对事件的处理常常在函数或方法中,简单的事件通过command选项绑定,当由事件产生时,相应组件的command选项绑定事件就会被出发
tkinter提供了更加灵活的事件处理方式:bind绑定事件,此方式通过组件的bind方法实现,格式如下: bind(event,method)
事件类型 | 讲解 |
---|---|
Activate | 组件从未激活到激活触发事件 |
Button | 点击鼠标触发事件,detail可指定具体按下哪个键 :Button-1 鼠标左键 / Button-2 鼠标中键/ Button-3 鼠标右键/ Button-4 滚轮上滚/ Button-5 滚轮下滚 |
ButtonRelease | 用户释放鼠标按键触发的事件 |
KeyPress | 用户按下键盘按键触发的事件 |
Configure | 组件尺寸发生变化触发的事件,detail可指定哪个按键 |
Enter | 鼠标进入组件触发的事件(不是用户按下Enter键) |
Motion | 鼠标在组件内移动的整个过程都会触发的事件 |
事件字符串modifer的取值:
modifier | 含义 |
---|---|
Alt | 按下Alt键时 |
Any | 表示任何类型按钮被按下时 |
Control | 当按下Contorol键时 |
Double | 连续两个事件被触发时 |
Shift | 按下shift时 |
Triple | 三个事件被连续触发 |
tkinter允许事件绑定在类上,此类的任何一个实例都会触发事件
如果想要将一个事件绑定在程序所有组件上,调用bind_all()函数
顶级菜单是图形窗口中最基础的菜单,此菜单通常包含多个选项,固定于窗口顶部。
tkinter库中Menu类的Menu()创建顶级菜单对象,使用菜单add_command()方法添加选项,并用窗口组件的menu将菜单添加到窗口
顶级菜单每个选项可以有子菜单,使用菜单的add_cascade()方法,可以将一个菜单和另一个菜单的选项级联,为菜单选项创建子菜单(下拉菜单)
tkinter是比较基础的python GUI的库文件,便于学习,也可以为以后学习打基础