### wxpython中文action教程 #### 重要知识点概览 1. **wxPython入门**:介绍如何启动wxPython项目,创建最简单的空程序,并逐步扩展它。 2. **基础概念**:涉及应用程序对象、窗口对象、事件处理等核心概念。 3. **事件驱动编程**:深入探讨事件触发机制、事件绑定及自定义事件。 4. **PyCrust工具**:通过PyCrust增强wxPython开发体验,包括交互式Shell、调试特性等。 5. **代码重构**:提升代码质量的方法,如模型-视图-控制器(MVC)模式的应用。 #### 具体知识点详解 ##### 一、wxPython入门 **1. 欢迎到wxPython** - **简介**:wxPython是一种用于创建桌面应用程序的Python库,基于wxWidgets C++库构建。 - **特点**:支持跨平台应用开发,包括Windows、Mac OS X和Linux等操作系统。 **2. 开始wxPython** - **安装**: 使用pip安装wxPython库。 ```bash pip install wxPython ``` **3. 创建最小的空wxPython程序** - **导入wxPython**: 首先导入wxPython模块。 ```python import wx ``` - **创建应用程序**: 实例化`wx.App`类。 ```python app = wx.App(False) ``` - **创建框架窗口**: 继承`wx.Frame`类创建窗口。 ```python class MyFrame(wx.Frame): def __init__(self, parent, title): super(MyFrame, self).__init__(parent, title=title, size=(200, 100)) self.Show(True) ``` - **启动程序**: 进入主事件循环。 ```python frame = MyFrame(None, "Hello wxPython") app.MainLoop() ``` **4. 扩展空程序** - **添加控件**: 如按钮、文本框等。 ```python panel = wx.Panel(frame) button = wx.Button(panel, label="Click Me") ``` - **布局管理**: 使用sizers进行布局。 ```python sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(button, 0, wx.ALL | wx.CENTER, 5) panel.SetSizer(sizer) ``` ##### 二、基础概念 **1. 应用程序对象** - **创建**: 通过继承`wx.App`并覆写其方法来实现。 ```python class MyApp(wx.App): def OnInit(self): frame = MyFrame(None, "Hello wxPython") frame.Show(True) return True ``` - **生命周期**: 包括初始化、运行和退出三个阶段。 **2. 顶级窗口对象** - **使用`wx.Frame`**:创建主窗口。 - **使用`wxPython`的ID**:为控件分配ID,便于识别和响应事件。 - **使用`wx.Size`和`wx.Point`**:设置位置和大小。 **3. 对话框** - **消息对话框**: 显示消息提示。 ```python wx.MessageBox("Hello wxPython", "Message") ``` - **文本输入对话框**: 获取用户输入。 ```python text = wx.TextEntryDialog(None, "Enter your name", "Name Entry").ShowModal() ``` - **选择对话框**: 从列表中选择选项。 ##### 三、事件驱动编程 **1. 事件处理** - **绑定事件**:使用`Bind`方法。 ```python button.Bind(wx.EVT_BUTTON, self.OnButton) ``` - **处理事件**:定义事件处理器。 ```python def OnButton(self, event): print("Button clicked!") ``` - **事件传递**: 事件对象沿着控件链传递。 **2. 自定义事件** - **定义事件**:继承`wx.PyCommandEvent`或`wx.CommandEvent`。 ```python class MyEvent(wx.PyCommandEvent): def __init__(self, etype, eid): super(MyEvent, self).__init__(etype, eid) ``` - **发送事件**:使用`ProcessEvent`方法。 ```python event = MyEvent(wx.EVT_MY_EVENT.typeId, id) wx.PostEvent(self, event) ``` ##### 四、PyCrust工具 **1. 交互式Shell** - **自动完成**: 提供代码建议。 - **调用提示**: 展示函数参数信息。 - **语法高亮**: 代码着色。 **2. 动态更新** - **实时预览**:对代码进行实时更改并在应用程序中立即看到效果。 **3. PyCrust Notebook** - **Namespace标签**: 查看变量空间。 - **Display标签**: 显示对象属性。 - **Calltip标签**: 函数调用提示。 - **Session标签**: 保存会话历史记录。 - **Dispatcher标签**: 处理多个连接的shell。 **4. Py包中的模块** - **buffer模块**: 缓冲区管理。 - **crust模块**: PyCrust核心功能。 - **dispatcher模块**: 多线程消息传递。 - **editor模块**: 代码编辑器功能。 - **introspect模块**: 反射和元数据查询。 - **shell模块**: Shell环境配置。 ##### 五、代码重构 **1. 重构的目的** - **提高可读性**: 使代码更加清晰易懂。 - **减少冗余**: 去除重复代码。 - **增强灵活性**: 便于维护和扩展。 **2. 模型-视图-控制器(MVC)** - **模型(Model)**: 负责数据处理。 - **视图(View)**: 展示数据。 - **控制器(Controller)**: 处理用户交互。 通过以上内容的学习,你可以更好地掌握wxPython的基本操作、核心概念以及高级工具的应用。这不仅有助于开发出功能丰富的桌面应用,还能提升代码质量和开发效率。
剩余564页未读,继续阅读
- dennysafeng2012-03-15不如想象的全,原书很厚的,貌似。。。
- brainhalt2011-09-22谢谢!非常好!很有用。 内容也很清晰。pdf版
- 粉丝: 1
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (完整)《医患沟通学》试题库及答案(通用版).docx
- 医院招聘护士考试题库(附答案).doc
- (通用)医保知识题库及答案(通用版).docx
- (通用)医师定期考核试题库及答案(通用版).docx
- (通用)医师定期考核《人文医学》试题及答案(通用版).docx
- (通用)医院招聘护士考试题库及答案(通用版).docx
- (完整)医保知识考试试题库及参考答案.docx
- (完整)医保知识考试题及参考答案.docx
- (完整)医疗三基三严知识试题库及答案(通用版).docx
- (完整)医师定期考核考试题库及答案.docx
- (完整)医学基础知识考试试题库及答案.docx
- (完整)医学基础知识题库及答案(通用版).docx
- (完整)医学三基考试题库及答案(通用版).docx
- (完整)医学三基考试题库及答案(通用版).docx
- (完整)医院保洁岗位院感防控知识考核试题及答案.docx
- (完整)医用织物管理制度汇编.docx