GUI图形用户界面编程
我们可以通过python提供的丰富的组件,快速的实现使用图形界面和用户交互
GUI编程类似于搭积木,将一个个组件放到窗口中
GUI编程整体描述
想观察类的层次结构可以在类定义处的类名上单击右键,选择Diagram->showDiagram
常用组件汇总列表
GUI应用程序类的经典写法
Frame框架是一个tkinter组件,表示一个矩形的区域,Frame一般作为容器使用,可以放置其他组件,从而实现复杂的布局
简单组件
Lable(标签)组件
主要用于显示文本信息,也可以显示图像
常见属性:
option选项详解
Entry单行文本框
Entry用来接收一行字符串的控件。如果用户输入的文字长度长于Entry控件的宽度时,文字会自动向后滚动。如果像输入多行文本,需要使用Text控件
Text多行文本框
Text主要用于显示多行文本,还可以显示网页链接,图片,HTML页面,甚至CSS样式表,添加组件等。因此,也常被当做简单的文本处理器、文本编辑器或者网页浏览器来使用。比如IDLE就是Text组件构成的
Radiobutton单选按钮
Radiobutton控件用于选择同一组单选按钮的一个,Radiobutton可以显示文本,图形
Checkbutton多选按钮
canvas画布
canvas时一个矩形区域,可以放置图形、图像、组件等
grid布局管理器
采用表格结构组织组件。子组件的位置由行和列的单元格来确定,并且可以跨行和跨列,从而实现复杂的布局。
pack布局管理器
pack按照组件的创建顺序将子组件添加到父组件中,按照垂直或者水平的方向自然排布。如果不指定任何选项,默认在父组件中自顶向下垂直添加组件。
pack是代码量最少,最简单的一种,可以用于快速生成界面
place布局管理器
可以通过坐标精确控制组件的位置,适于一些布局更加灵活的场景
事件处理
一个GUI应用整个生命周期都处在一个消息循环中。它等待事件的发生,并作出相应的处理。
Tkinter提供了用以处理相关事件的机制,处理函数可被绑定给各个控件的各种事件
widget。bind(event,handler)
如果相关事件发生,handler函数会被触发,事件对象event会传递给handler函数
鼠标和键盘事件
event对象属性
lambda表达式详解
lambda表达式定义的是一个匿名函数,只适合简单输入参数,简单你计算返回结果,不适合功能复杂情况
lambda定义的匿名函数有输入也有输出,只是没有名字。语法格式
lambda 参数值列表(输入):表达式(输出)
多种事件绑定方式汇总
组件对象的绑定:
1.通过command属性绑定(适合简单不需获取event对象)
Button(root,text="登录",command=login)
2.通过bind()方法绑定,(适合需要获取event对象)
c1=Canvas();c1.bind("<Button-1>",drawLine)
组件类的绑定
调用对象的bind_class函数,将该组件类所有的组件绑定事件:
w.bind_class("Widget","event",eventhanler)
比如:btn01.bind_class("Button","<Button-1>",function)
OptionMenu选择项
用来做多选一,选中的项在顶部显示
Scale滑块
颜色选择框
文件对话框
文件对话框帮助我们实现可视化的操作目录,操作文件。最后,将文件,目录的信息传入到程序中。
简单输入对话框
simpledialog包含如下常用函数
通用消息框
用于和用户简单的交互,用户点击确定、取消,如下为常用函数
菜单
1.主菜单
主菜单通常位于GUI程序上方
2.快捷菜单
通过鼠标右键单击组件而弹出的菜单,一般是和这个组件相关的操作,比如剪切,复制,粘贴,属性等
记事本项目
打开和保存文件
新建文件
背景色改变
快捷键
将python程序打包成exe文件
画图软件的开发