ptrhon GUI编程
GUI程序步骤
从tkinter中加载组件类
- from tkinter import *
创建组件类实例
- Label(父组件对象, 标签配置选项),例如wedget = Label(None,text=’wy’):默认顶层窗口,显示文本
- 另外组件的配置方法:wedget[‘text’]=’wy’;wedget.config(text=’wy’)
在父组件中打包该实例.wedget.pack(),调用打包几何管理器,安排组件在容器中的位置,返回空.
- 安排组件位置依据:
- 被pack()的顺序.窗口收缩时,先打包的组件最后被裁切
- 边的选项设置
- side参数:父组件边中的位置,例如TOP,LEFT
- expand参数:YES为组件扩展空间
- fill参数:拉伸组件充满空间.Y垂直,X水平,BOTH都拉伸
- anchor参数:分配空间大于组件需要的显示空间时,定位,默认CENTER,有N,E,W,S,NE,NW,SE,SW等方位
- pack_forget():擦除(取消映射,隐藏)一个绘制的组件
- 安排组件位置依据:
调用主循环,显示窗口,开始事件循环.
- wedget.mainloop():可作为函数和方法
基本概念
根窗口:tkinter.Tk()返回的对象,GUI程序中可以有多个顶层窗口,但是其中只能有一个是根窗口(可以手动创建多个根窗口)默认都会创建TK作为父窗口.
顶层窗口:在应用中独立显示窗口.Toplevell或TK.
控件:GUI 组件,控件可以独立存在,也可以作为容器存在。如果一个控件包含其他控件,就可以将其认为是那些控件的父控件。相应地,如果一个控件被其他控件包含,则将其认为是那个控件的子控件。
事件:控件的一些相关的行为.
回调:GUI 对事件的响应.
事件驱动处理:一个 GUI 应用从开始到结束就是通过整套事件体系来驱动的。
布局管理器:帮助控件集进行定位.三种:
- place:直接提供控件的大小和摆放位置,然后管理器就会将其摆放好。会加重编程开发者的负担.
- pack:会把控件填充到正确的位置(即指定的父控件中),然后对于之后的每个控件,会去寻找剩余的空间进行填充。(主要)
- grid:基于网格坐标,使用 Grid 来指定 GUI 控件的放置。Grid 会在它们的网格位置上渲染 GUI 应用中的每个对象
复合组件:Dialog,ScrolledText, OptionMenu
回调安排:组件的after,wait,update方法
控件
控件 | 描述 |
---|---|
Button | 与Label类似,但提供额外的功能,如鼠标悬浮、按下、释放以及键盘活动/事件 |
BitmapImage | 图像组件,用于在其他组件上显示位图 |
Canvas | 提供绘制形状的功能(线段、椭圆、多边形、矩形),可以包含图像或位图 |
Checkbutton | 多选框,可以勾选其中的任意个(与HTML的checkbox输入类似) |
Entry | 单行文本框 |
Frame | 包含其他控件的纯容器 |
Label | 用于包含文本或图像 |
LabelFrame | 标签和框架的组合,拥有额外的标签属性 |
Listbox | 给用户显示一个选项列表来进行选择 |
Menu | 按下Menubutton后弹出的选项列表,用户可以从中选择 |
Menubutton | 用于包含菜单(下拉、级联等) |
Message | 消息。与Label类似,不过可以显示成多行 |
PanedWindow | 一个可以控制其他控件在其中摆放的容器控件 |
PhotoImage | 图像组件,用于在其他组件上显示全彩色图像 |
Radiobutton | 单选按钮 |
Scale | 线性“滑块”控件,根据已设定的起始值和终止值,给出当前设定的精确值 |
Scrollbar | 为Text、Canvas、Listbox、Enter等支持的控件提供滚动功能 |
Spinbox | Entry和Button的组合,允许对值进行调整 |
Text | 多行文本框,用于收集(或显示)用户输入的文本(与HTML的textarea类似) |
Toplevel,TK | 与Frame类似,不过它提供了一个单独的窗口容器 |
窗口
方法:
- title(‘标题’):设置窗口标题
- quit():结束mainloop事件循环呼叫,退出程序
- destroy():关闭一个窗口(及其子窗口)或删除一个组件
- protocol(‘WM_DELETE_WINDOW’, lambda:None):忽略关闭,设置x的功能
- iconbitmap(‘图标或位图文件’):改变顶层窗口的图标
- maxsize():获取最大化窗口的大小(宽度,高度)
- geometry(“宽x高+离屏幕左边界距离+离屏幕上边界距离”).x是小写字母x,不是乘号
- iconify():隐藏窗口,显示图标,像最小化
- withdraw():隐藏窗口
- deiconify():重新创建已隐藏或删除的窗口
- state():查看或改变窗口状态. normal, icon,iconic (see wm_iconwindow), withdrawn, or zoomed (全屏,只在Windows上).
- bell():系统的声音接口
- flash():使组件瞬时闪动,快速变换颜色
参数配置选项
- master或第一个参数:父控件,不传入或传入None都默认Tk
- text:显示文本
- command:注册处理器,记录组件事件发生调用的行为,任何可调用对象(函数,lambda,类方法,可调用类等)
- 不会接到参数,可以通过全局变量,类实例属性,间接层提供额外属性
- 如果直接调用一个有参数的函数,会在创建时运行,需要间接层(放入一个无参的函数或lambda)
- state:状态.DISABLED(禁用),NORMAL(正常),READONLY(只读)
配置组件外观外观:
- bg:背景颜色,颜色名称或十六进制字符串(“#ff0000”)
- fg:前景颜色,文本颜色
- font:传入(字体系列,大小,类型)三元组.字体系列有Times,Courier,Helvetica等,类型有:normal(正常),bold(粗体),romam(罗马),italc(斜体),underline(下划线),overstrike(加粗)等
- height:高度
- width:宽度
- bd:边框宽度
- relief:边框类型,FLAT(扁平),SUNKEN(凹陷),RAISED(凸起),GROOVE(凹槽),SOLID(加粗),RIDGE(脊柱)
- cursor:鼠标经过时指针外观.crdss(十字),pencil(铅笔),hand2(手形2)
- padx,pady:留白,周围添加额外空间
对话框
通过脚本弹出窗口,提供或要求额外的信息.分为模态(会阻止其他界面,直至被关闭)和非模态(不干扰其他界面)
通用对话框:
- 都是模态
- 位于kinter.messagebox中,第一个参数是标题,第二个参数是显示文字:askokcancel(返回True和False), askquestion(返回yes和no), askretrycancel(返回True和False), askyesno(返回True和False), askyesnocancel(返回True和False和不返回), showerror(返回0k), showinfo(返回0k), showwarning(返回0k)
- tkinter.filedialog中,文件打开和保存对话框,返回相应的目录路径,文件路径或文件对象:’askdirectory’, ‘askopenfile’, ‘askopenfilename’, ‘askopenfilenames’, ‘askopenfiles’, ‘asksaveasfile’, ‘asksaveasfilename’.可以传入:filetypes(用于选择文件的名称模式),initialdir(起始目录),initialfile(“文件名”),title(对话框窗口),defautextension(默认选择),parent(显示为嵌入式子级)
- tkinter.colorchooser中askcolor,调色板选择颜色,会返