




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Python GUI程序设计,张晓 西北工业大学计算机学院 2009-11-20,Python程序设计语言,2,Python GUI编程概述,PyQT wxPython wxPython参考资料 活学活用wxPython /,Python程序设计语言,3,wxPython是什么,wxPython 实际是两件事物的组合体:Python 脚本语言和 GUI 功能的 wxWindows 库 wxWindows库是为了最大可移植性的 C/C+ 库,而抽取 GUI 功能 Windows X、KDE 或 Gnome 的 UNIX wxPython 应用程序不仅快
2、速和易于编写,而且可以在不作任何更改情况下,运行在 Windows 或 UNIX 环境下 /,Python程序设计语言,4,最小的 wxPython 程序,显示一个空白的窗口,标题为First Windows App对象 Frame对象,import wx app = wx.PySimpleApp() frame = wx.Frame(None, -1, First Windows, size=(300, 300) frame.Show(True) app.MainLoop(),Python程序设计语言,5,显示JPG图片,使用image对象 将im
3、age对象传递给frame,class Frame(wx.Frame): #2 wx.Frame子类 Frame class that displays an image. def _init_(self, image, parent=None, id=-1, pos=wx.DefaultPosition, title=Hello, wxPython!): #3图像参数 Create a Frame instance and display image. #4 显示图像 temp = image.ConvertToBitmap() size = temp.GetWidth(), temp.Ge
4、tHeight() wx.Frame._init_(self, parent, id, title, pos, size) self.bmp = wx.StaticBitmap(parent=self, bitmap=temp),Python程序设计语言,6,图形设计的基础,应用程序 窗口 控件 事件处理,Python程序设计语言,7,各对象的生命周期,应用程序 窗口/控件 事件处理,Python程序设计语言,8,增加一个控件,创建并修改状态栏 增加一个Menu 增加静态文本,增加单选框,复选框,进度条,statusBar = self.CreateStatusBar() #1 创建状态栏 s
5、elf.SetStatusText(This is the statusbar),menuBar = wx.MenuBar() # 创建菜单栏 # 创建两个菜单 menu1 = wx.Menu() menuBar.Append(menu1, File) self.SetMenuBar(menuBar) # 在框架上附上菜单栏,Python程序设计语言,9,有哪些控件wxPython Demo,Python程序设计语言,10,事件驱动环境,事件处理是wxPython程序工作的基本机制。 事件就是发生在系统中的事,应用程序通过触发相应的功能以响应它。 低级的用户动作,如鼠标移动或按键按下 高级的用
6、户动作(定义在wxPython的窗口部件中的),如单击按钮或菜单选择。 系统动作,如关机。,Python程序设计语言,11,事件驱动的术语,事件(event):应用程序期间发生的事情,它要求有一个响应。 事件对象(event object):在wxPython中,它具体代表一个事件,其中包括了事件的数据等属性。它是类wx.Event或其子类的实例,子类如wx.CommandEvent和wx.MouseEvent。 事件类型(event type):wxPython分配给每个事件对象的一个整数ID。事件类型给出了关于该事件本身更多的信息。例如,wx.MouseEvent的事件类型标识了该事件是一
7、个鼠标单击还是一个鼠标移动。 事件源(event source):任何wxPython对象都能产生事件。例如按钮、菜单、列表框和任何别的窗口部件。 事件驱动(event-driven):一个程序结构,它的大部分时间花在等待或响应事件上。 事件队列(event queue):已发生的但未处理的事件的一个列表。 事件处理器(event handler):响应事件时所调用的函数或方法。也称作处理器函数或处理器方法。 事件绑定器(event binder):一个封装了特定窗口部件,特定事件类型和一个事件处理器的wxPython对象。为了被调用,所有事件处理器必须用一个事件绑定器注册。 wx.EvtHa
8、ndler:一个wxPython类,它允许它的实例在一个特定类型,一个事件源,和一个事件处理器之间创建绑定。注意,这个类与先前定义的事件处理函数或方法不是同一个东西。,Python程序设计语言,12,事件驱动编程,在初始化设置之后,程序的大部分时间花在了一个空闭的循环之中 程序包含了对应于发生在程序环境中的事情的事件。 作为这个空闭的循环部分,程序定期检查是否有任何请求响应事情发生 当事件发生时,基于事件的系统试着确定相关代码来处理该事件,如果有,相关代码被执行,Python程序设计语言,13,增加一个事件驱动的例子,定义一个事件处理函数 将事件处理函数与窗体或控件关联,Bind,def On
9、Move(self, event): pos = event.GetPosition() self.SetStatusText(%s, %s % (pos.x, pos.y),self.bmp.Bind(wx.EVT_MOTION, self.OnMove),Bind(event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY),Python程序设计语言,14,如何使用wxPython Demo中的例子,Demo例子的结构 import wx #及其他需要的包 class TestPanel(wx.Panel): def runTest(frame, nb, log): Main函数(直接使用会失败) 定义一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字艺术展览导览系统设计与观众导引策略报告
- 聚焦2025年房地产中介行业规范化管理与市场拓展分析报告
- 2023黑龙江省农药包装废弃物全链条数字化回收治理技术
- 2023年统计继续教育试题及答案
- 二零二五年度电子商务平台客户合同及保密协议管理规范
- 二零二五年度跨境投资股份托管及清算协议
- 2025电力系统改造工程合同范本版
- 二零二五年度地基基础工程绿色施工管理协议
- 二零二五年度合作承包公寓配套设施建设合同
- 2025版网络安全公司技术支持人员雇佣合同模板
- 重庆代建管理办法
- 2025房屋买卖合同模板下载
- 妇产科医德医风奖惩措施规范化研究
- 消防维保入场承接查验表
- 年度在职培训管理办法
- 儿童意外伤害防治课件
- 装修带家具家电合同范本
- 2025北京海淀高二下学期期末化学试卷含答案
- 备战2026年高考数学模拟卷(新高考II卷专用)(解析版)
- 中国十二碳二元酸行业调查报告
- 2025区域型变电站智能巡视系统技术规范
评论
0/150
提交评论