上海交通大学 python程序设计课程 Ch8-1课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
>>> def hiButton():
...
print 'hi there'
百度文库
... >>> Button(root,text='print',command=hiButton).pack()
学习交流PPT
17
17
常用构件:勾选钮
• 类:Checkbutton
cb = Checkbutton(窗口,选项设置) • text
图形用户界面
学习交流PPT
1
程序的用户界面
• 程序中与用户进行交互的部分
• 用户通过UI向程序输入数据或者请求程序执行特定 任务
• 程序通过UI向用户显示各种信息
• UI应该是用户友好的 • 两类UI
• 命令行界面 • 图形界面(GUI)
学习交流PPT
2
2
GUI构件
• 窗口Window
• 是容器:可以容纳其他构件的构件 • 程序有一个根窗口
• 注意写法:对象创建与方法调用合二为一
学习交流PPT
15
15
常用构件:按钮
• 类:Button
btn = Button(窗口,选项设置) • text:按钮上的文本 • command:点击按钮时要执行的命令
• 需要提供一个函数或方法名f
• 注意不是函数调用f()
• height,width • fg,bg • relief:RAISED/FLAT/SUNKEN/GROOVE/ • state:NORMAL/ACTIVE/DISABLED
• 事件:例如点击鼠标,按下键盘等. • 事件处理程序:对事件进行处理的代码. • 事件驱动编程:一种编程范型
• 程序有一个事件循环
• 事件监测
• OS功能,由工具包提供支持
• 事件处理
• 应用程序员只需编写自己的事件处理程序
学习交流PPT
6
6
GUI编程
• 需要GUI工具包
• 将低层细节对程序员隐藏 • 跨平台 • Python标准库:Tkinter
• 根窗口的尺寸设置
root.geometry("400x400") • 缺省值为200x200
学习交流PPT
12
12
构件间的父子关系
• GUI中的所有构件按父子关系构成树状层次结构 • 每个构件都有master和children属性
• Tkinter自动维护这两个属性的值 • 编程时可利用这两个属性,例如: aLabel.master.title("My GUI")
学习交流PPT
16
16
例:按钮
• 下例中按钮对应的函数是root对象的方法quit
>>> b=Button(root,text="Quit",command=root.quit) >>> b.pack() >>> root.mainloop() # 点击按钮退出主循环,回到>>>
• 下例中按钮对应的函数是自定义函数
• 标签Label
• 按钮Button • 菜单Menu • 框架Frame
窗口W
框架F1 勾选钮C1
• 也是容器
勾选钮C2
框架F2 OK Cancel
学习交流PPT
3
3
构件之间的关系
• 父子关系
• 在一个构件内创建另一个构件 • 界面上全体构件形成一个层次结构 • 顶层是根窗口
• 父构件内安排子构件:使用布局管理器
• GUI编程
• 设计界面外观 • 为每个构件定义事件处理代码 • 建立启动初始化和总控部分
学习交流PPT
7
7
Tkinter的常用构件类
• Button • Canvas • Checkbutton • Entry • Frame • Label • Listbox • Menu • Message • Radiobutton • Text • Toplevel
>>> Checkbutton(root,text="Math").pack() >>> Checkbutton(root,text="Python").pack() >>> Checkbutton(root,text="English").pack()
学习交流PPT
4
4
事件驱动
• GUI程序的执行流程取决于与用户的实时交互
• 例如:Word程序的执行
• 事件驱动编程
• 普通程序的执行:启动——做事——终止 • 事件驱动程序的执行:启动——事件循环
• 等待事件发生,然后处理 • 程序的终止也是由特定事件(如关闭窗口事件)引起的
学习交流PPT
5
5
基本概念
学习交流PPT
13
13
界面设计过程
• 根据需要创建多个构件,然后在窗口中进行布局. • 例:eg8_3.py
from Tkinter import * root = Tk() aLabel = Label(root,text="Hello World") aLabel.pack() aButton = Button(root,text="Click Me") aButton.pack() root.mainloop()
• 属性一般都有缺省值 • 用"命名参数"方式设置较方便:属性=属性值
• 创建时不设置,将来再设置或修改
• 利用构件类的config方法: 对象.config(属性=属性值) • 对象视为字典: 对象[属性]=属性值
学习交流PPT
11
11
根窗口
• 根窗口的标题设置
root.title("My GUI") • 缺省值为"Tk"
学习交流PPT
8
8
最简单的Tkinter程序
• 导入Tkinter • 建立根窗口 • 进入事件循环 • 例:eg8_1.py from Tkinter import * root = Tk() root.mainloop()
学习交流PPT
9
9
在窗口中添加构件
• 两步:
• 创建 • 布局
• 例:eg8_2.py
from Tkinter import * root = Tk() aLabel = Label(root,text="Hello World") aLabel.pack() root.mainloop()
学习交流PPT
10
10
在窗口中添加构件
• 构件对象有很多属性(实例变量):
• 创建时设置属性的值
学习交流PPT
14
14
常用构件:标签
• 类:Label
lb = Label(窗口,选项设置) • text:标签文本内容 • width:标签宽度 • fg:前景色(文本颜色)
• 例如
>>> aLabel = Label(root,text="Hello World") >>> aLabel.pack() >>> Label(root,text='red color',fg='red').pack()