Python图形界面(自学Python系列笔记-4)(不定期更新)
l GUI Graphical User Interfaces
l tkinter模块
n 是Python系统配置的标准GUI库
n 采用tkinter模块编写的界面可以在所有主流操作系统上运行
l 从应用的角度来看,Python中的GUI实际上都是C扩展包的实例。脚本建立按钮和菜单时,最终是和一个C库发生对话;脚本响应用户事件后,最终由一个C库作出回应
l 名词汇总
n canvas组件:canvas意味帆布,油画布,canvas组件用来绘图
l 如果要开发商业级的GUI项目,学习完基础知识后,还需要研究一下Pmw,PIL,Tix,ttk等扩展包,可以节省开发时间,界面更好看
l tkinter的结构
n tkinter字面意思是Python与Tk库进行交互,Tk是一个GUI库
n 实现结构:Python通过tkinter模块与Tk库交流,tkinter设计为一个结合体,其一是用Python编码的tkinter模块包,其二是用C编写的扩展模块_tkinter,_tkinter与Tk库发生交互
l 创建组件
n widget = Label(None, text = ‘hello GUI World’)
u 第一个参数是父组件对象,将新标签设置其中,这里None表示将新标签设置在该程序的默认顶层窗口。稍后,我们会向该位置传递其他组件的实际位置,并将标签设置在其他组件充当的容器对象内
u 第二个参数是标签配置选项,是关键字参数,不同的关键字设定不同的内容
n root = Tk()
u Tk表示程序的主窗口,一般是未设定时的默认组件,注意一些组件生成新的弹出窗口,这些窗口独立于主程序窗口
l 组件尺寸调整
n Label(text = ‘hello world’).pack(expand = YES, fill = BOTH)
n expand要求打包几何管理器为组件扩展空间
n fill选项用来拉伸组件,使其充满分配的空间
n 注意fill=BOTH和fill=X以及fill=Y的区别
u X是水平方向无限拉伸,Y是竖直方向
u expand=YES是指需要拉伸,默认是不拉伸的
l 设置组件选项和窗口标题
n from tkinter import *
n root = Tk()
n widget = Label(root)
n widget.config(text = ‘Hello World!’)
n widget.pack(side=TOP, expand = YES, fill = BOTH)
n root.title(‘hello.py’)
n root.mainloop()
l 添加按钮和回调函数
n 组件的command选项来记录按钮按下时,回调处理函数的返回位置,即按钮按下时tkinter需要调用的行为
n 添加用户自定义的回调函数
u def hello():
l print(‘Hello!’)
l sys.exit()
u root = Tk()
u widget = Button(root)
u widget = config(text = ‘Hello World’, command = hello)
u widget.pack(side = TOP, expand= YES, fill = Y)
u root.title(‘Hello.py’)
u root.mainloop()
l 细节
n Label().pack()
u 创建标签之后,立即调用对象的pack方法安排在屏幕中显示,而label对象只是暂时存在的,由于没有为其分配名字,因此运行完pack方法后,会被GC回收并释放空间
u 同时注意pack()返回的是空对象,不要pack完了再赋值给一个名字
n 注意import
u 版本小于3.0的,from Tkinter import Label
u 版本大于等于3.0的,from tkinter import Label