简介
wxPython是一个 Python 包装器wxWidgets(用 C++ 编写),一个流行的跨平台 GUI 工具包。wxPython 由 Robin Dunn 和 Harri Pasanen 共同开发,被实现为 Python 扩展模块。
就像 wxWidgets 一样,wxPython 也是一个免费软件。可以从官网http://wxpython.org下载。许多操作系统平台的二进制文件和源代码可在此站点上下载。
wxPython API 中的主要模块包括一个核心模块。它包括wxObject类,它是 API 中所有类的基础。控制模块包含 GUI 应用程序开发中使用的所有小部件。例如,wx.Button、wx.StaticText(类似于标签)、wx.TextCtrl(可编辑文本控件)等。
wxPython API 具有 GDI(图形设备接口)模块。它是一组用于在小部件上绘图的类。字体、颜色、画笔等类是其中的一部分。所有容器窗口类都在 Windows 模块中定义。
wxPython 的官方网站还托管了 Project Phoenix——一个用于 Python 3.* 的 wxPython 的新实现。它专注于提高速度、可维护性和可扩展性。该项目于 2012 年开始。
wxPython 的核心优势可以概括为“原生、跨平台、控件多、上手快”
- 原生观感(Native Look & Feel)
- 直接调用操作系统原生控件,在 Windows、macOS、Linux 上自动呈现本地风格,用户没有“违和感”。
- 一套代码,跨平台运行
- 同一个 .py 文件无需修改即可在三大桌面系统发布,显著降低维护成本。
- 控件丰富、功能完备
- 提供按钮、列表、树形、HTML 渲染器等 100+ 预制控件,并支持自定义绘图和复杂布局(Sizers),足以覆盖绝大多数桌面应用需求。
- 成熟的稳定性与文档社区
- 基于 1992 年诞生的 wxWidgets,经过大量商业项目验证;官方文档齐全,社区活跃,遇到问题容易找到答案。
- 学习曲线平缓
- API 直观,Python 开发者无需深入 C++ 细节即可快速上手;对于中小型项目和原型开发尤其高效。
一句话总结:如果你想用 Python 快速做出“长得像原生”的跨平台桌面应用,wxPython 是省心又稳当的选择。
初体验
下面是一个例子,它创建了一个有一个文本框的窗口用来显示鼠标的位置:
#!/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()
当你粘贴这段代码然后运行之后,你就会看到这样的效果:
他会出现一个界面,并且当你的鼠标移动的时候,他会实时的刷新你鼠标的坐标。在上面的代码中我们可以看到,wxPython的代码还是很简洁的,并且也很容易上手,代码量也不是很多,对新手是很友好的。那么在官方文档上是这样来介绍他的:
漂亮的界面是一个GUI程序必不可少的一部分,wxPython可以做到这一点,加之Python强大的功能和简洁的语法,使用得它在Python的gui中成为一种主流