### wxPython in Action 中文版 —— 跨平台界面开发 #### 1. wxPython简介与入门 **wxPython** 是一个使用 Python 编写的 GUI 库,它为 Python 提供了对 **wxWidgets C++ API** 的封装,使得开发者能够轻松地构建出功能丰富的跨平台应用程序。本章节将详细介绍如何通过 wxPython 构建用户界面,并通过实例来展示其基本用法。 #### 2. 示例程序分析 ##### 2.1 显示鼠标位置的窗口 在本节中,我们将通过一个简单的例子来展示如何创建一个窗口,该窗口中包含一个文本框用于显示鼠标的当前位置。 ```python #!/bin/env python import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300)) panel = wx.Panel(self, -1) panel.Bind(wx.EVT_MOTION, self.OnMove) wx.StaticText(panel, -1, "Pos:", pos=(10, 12)) self.posCtrl = wx.TextCtrl(panel, -1, "", pos=(40, 10)) def OnMove(self, event): pos = event.GetPosition() self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y)) if __name__ == '__main__': app = wx.PySimpleApp() frame = MyFrame() frame.Show(True) app.MainLoop() ``` **解析**: 1. **创建框架**: 我们创建了一个 `MyFrame` 类,继承自 `wx.Frame`。 2. **初始化**: 在构造函数中,设置了窗口的标题为 "My Frame",并定义了窗口大小为 300x300 像素。 3. **绑定事件**: 使用 `panel.Bind` 方法将鼠标移动事件 (`wx.EVT_MOTION`) 绑定到 `OnMove` 方法上。 4. **显示位置**: 当鼠标移动时,调用 `OnMove` 方法更新文本框中的坐标值。 5. **启动应用**: 通过创建 `wx.PySimpleApp` 实例并调用 `MainLoop()` 方法来启动应用。 ##### 2.2 创建空的 wxPython 程序 接下来,我们将介绍如何创建一个最基本的 wxPython 应用程序,即不包含任何用户界面元素的应用程序。 ```python import wx class App(wx.App): def OnInit(self): frame = wx.Frame(parent=None, title='Bare') frame.Show() return True app = App() app.MainLoop() ``` **解析**: 1. **导入 wx 模块**: 导入 `wx` 模块以使用 wxPython 的功能。 2. **创建 App 类**: 定义一个继承自 `wx.App` 的 `App` 类。 3. **初始化方法**: 重写 `OnInit` 方法,在其中创建一个窗口并显示出来。 4. **创建实例**: 创建 `App` 类的实例。 5. **进入主事件循环**: 调用 `MainLoop()` 方法启动应用。 #### 3. wxPython 的发展历程 **wxPython** 是基于 **wxWidgets** 开发的一个 Python GUI 库,wxWidgets 是一个开源的 C++ 库,用于开发跨平台的图形用户界面。wxPython 的目标是为 Python 程序员提供一个简单易用的 GUI 开发工具。 随着 Python 社区的发展,wxPython 也经历了多个版本的迭代。最初,wxPython 的包名是 `wxPython`,并包含了一个名为 `wx` 的内部模块。为了简化代码结构并提高代码可读性,后来的版本中采用了直接导入 `wx` 包的方式,这种方式更简洁且易于理解。 #### 4. 总结 通过以上示例,我们可以看到 wxPython 是一个功能强大且易于使用的 GUI 库。无论是简单的窗口应用还是复杂的多组件应用,wxPython 都能提供足够的支持。对于想要快速开发跨平台桌面应用的开发者来说,wxPython 是一个非常好的选择。
剩余546页未读,继续阅读
- 平凡的想法简单的生活2015-07-25非常好的资料
- 粉丝: 4
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助