wxpython开始使用wxpython


备注

什么是wxPython

简单地说,wxPython是一组绑定到wxWidgets C ++ Cross Platform GUI库的。

好的什么是wxWidgets

wxWidgets库为各种GUI元素提供免费,免费和开源的抽象集,以便在可用的情况下仍然使用本机控件,从而保持原生外观,感觉和速度。因此,它为GUI创建和平台中的许多其他实用程序提供了抽象,允许开发人员使用单个代码库为Windows,Mac OS X,Linux和其他平台创建应用程序。 wxWidgets始于1992年,你可以在这里看到详细的历史。 wxWidgets库是在wxWindows许可证下发布的,该许可证基于L-GPL但具有异常子句exception子句允许您动态或静态地将应用程序链接到wxWidgets, 而无需为您自己的应用程序分发源代码。换句话说,你可以使用wxWidgets的为免费或商业项目,在没有成本 。许可证鼓励您回馈您对wxWidgets库本身所做的改进。

重点介绍,wxWidgets包含100个用于跨平台应用程序开发的类

  • 使用Sizer的窗口布局
  • 设备上下文(以及钢笔,画笔和字体)
  • 综合事件处理系统
  • HTML帮助查看器
  • 声音和视频播放
  • Unicode和国际化支持
  • 文档/视图架构
  • 打印结构
  • 套接字
  • 多线程
  • 文件和目录操作
  • 在线和上下文相关的帮助
  • HTML渲染
  • 基本容器
  • 图像加载,保存,绘图和操作
  • 日期时间库和计时器
  • 错误处理
  • 剪贴板和拖放

请注意,其中一些工具( 例如线程)实际上与GUI无关,但提供了有用的跨平台抽象,因此,例如,在线程化的情况下,一组应用程序代码将在任何支持的平台上运行。

多年来, 除了从一组源代码,为ASCII和Unicode构建的静态和动态库的调试构建之外, wxWidgets库还生成了4个独立的构建。它通常以最常见的变体预先构建,并作为源代码构建, 具有针对目标环境的各种选项以及支持众多工具链的开发人员C ++工具链。

这个库的python绑定和一些添加形成了wxPython。

回到什么是wxPython,(它给了我什么)?

wxPython为开发人员提供了一种从跨平台GUI库中获益的方式,具有明确的许可证,同时还提供了Python的优势。像wxWidgets和Python一样,wxPython是免费的,免费和开源的,可以在免费和商业项目中使用和分发, 而不需要分发你的源代码

  • 完整的GUI套件包括(但不限于):
    • Windows(包括MDI Windows)
    • 奇才
    • 框架和迷你框架
    • 对话,标准,高级和自定义
    • 书籍,树木,网格和数据视图控件
    • 仪表,滑块,旋转器,动画,剪贴板,拖放
    • HTML,PDF和图像查看器支持
    • GUI组件可以绝对定位,但强烈建议使用基于sizer的布局,支持自动调整大小等。
  • 跨平台 - 支持Windows,OS-X和Linux的GUI,只需一个代码库代码中没有条件语句
  • 原生速度,外观和感觉。
  • 快速原型,测试和调试 - 记住这是python
  • 运行和编辑演示包中几乎所有内容的示例。
  • 即使在商业产品中也可以免费使用免费许可。
  • 如果有必要,您的python GUI可以稍后重构为C ++ wxWidgets GUI,因为它已经在使用它。
  • StackOverflow邮件列表上的大型,活跃且有用的用户和开发人员社区。

请注意,在python本身提供用于实现wxWidgets的实用程序功能的跨平台机制的情况下, 线程再次成为一个很好的示例故意从wxPython中省略。

wxPython还有一个非常大的演示套件,可以在Documents and Demo包中运行,测试和编辑。

wxPython的味道

ASCII与Uni​​code

多年来, 与wxWidgets一样 ,开发人员必须在ASCII和Unicode构建之间进行选择,并且需要针对特定​​版本的python以及32/64位选项进行构建。从wxPython 2.8.9开始,wxPython的ASCII唯一版本已被删除,因此Unicode支持始终可用。

经典与菲尼克斯

从wxPython 3.0.0开始,已经发布了wxPython的发布 “Classic”版本以及Phoenix 目前尚未发布的版本。经典构建往往落后于相同数字的wxWidgets构建,文档包是C ++ - 它可以在各种平台上下载(参见Classic的安装 ),在windows作为可执行安装程序的情况下。 Phoenix绑定在很大程度上是自动生成的,应该更紧密地关注wxWidgets构建,还包括wxPython特定文档 - 它可以从源代码或夜间版本构建, 因为可以使用pip获取轮子 (参见Phoenix的安装 )。

在wxPython但不是wxWidgets

wxPython使用许多功能扩展了wxWidgets库, 以下只是一些,在wxWidgets中不可用:

演示Win10上的截图

关闭所有分支的wxPython演示: 在此处输入图像描述最近增加的一个: 在此处输入图像描述 AGW之一,(高级通用小部件): 在此处输入图像描述

你好,世界

创建Hello World程序的简单方法:

import wx
app = wx.App(redirect=False)
frame = wx.Frame(parent=None, id=wx.ID_ANY, title='Hello World')
frame.Show()
app.MainLoop()
 

输出:

Hello World输出

一个更典型的例子是子类wx.Frame

import wx

class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, title='Hello World')
        self.Show()

if __name__ == '__main__':
    app = wx.App(redirect=False)
    frame = MyFrame()
    app.MainLoop()
 

这也可以重写为使用Python的超级

import wx  

class MyFrame(wx.Frame):
        
    def __init__(self, *args, **kwargs):
        """Constructor"""
        super(MyFrame, self).__init__(*args, **kwargs)
        self.Show()

if __name__ == '__main__':
    app = wx.App(False)
    frame = MyFrame(None, title='Hello World')
    app.MainLoop()
 

安装wxPython Classic

wxPython Classic是wxPython库的Python 2版本。 python绑定的生成需要大量的手动干预,文档只是wxWidgets文档,其中包含有关wxPython机制的一些注释,因此在新版本的wxWidgets和wxPython的匹配版本之间通常会有数周到数月的延迟。

转到wxPython网站上的下载页面,看看是否已经有适合您平台的wxPython版本。

Classic的最新版本是3.0.2.0

视窗

网站上有适用于32位和64位Windows平台的Python 2.6和2.7安装程序。只需下载其中一个并运行它们即可安装它。

注意:确保为已安装的正确Python下载wxPython安装程序。例如,如果你有32位的Python 2.7,那么你需要一个wxPython 32位安装程序

苹果电脑

如果你有OSX 10.5或更高版本 ,那么你将需要下载并安装wxPython的Cocoa版本。 Cocoa版本还支持64位Mac。

如果你的Mac版本的OSX小于10.5 ,那么你将需要Carbon版本。

Linux的

首先要检查你的Linux平台的包管理器(即yum,apt-get等)是否有你可以安装的wxPython版本。不幸的是,很多用于wxPython的Linux软件包都是针对2.8.12.1而不是3.0.2.0。如果您的软件包管理器没有最新版本,您可能需要自己构建它。

有建立指令3.0.2.0古典这里

安装wxPython Phoenix

wxPython PhoenixwxPython的最新版本(目前2016年9月没有官方发布)。它支持Python 2和Python 3.您可以在此处下载适用于您的平台和Python版本的快照构建(即Python轮)。

wxPython Phoenix利用一种基本上自动化的机制来生成wxWidgets库和文档的python绑定。 Phoenix wxPython文档是使用Sphinx专门为自己生成的。与经典构建的C ++文档相比,这提高了清晰度,其中包括许多在wxPython中不可用的重载。

必须先安装Pythonpip才能安装wxPython Phoenix。

您可以使用pip来安装Phoenix版本的wxPython。这是目前推荐的方法:

python -m pip install --no-index --find-links=http://wxpython.org/Phoenix/snapshot-builds/ --trusted-host wxpython.org wxPython_Phoenix
 

当您使用此命令时,pip还将安装wxWidgets 。当Phoenix正式发布时,这个复杂的pip命令可能会成为'pip install wxpython'。

注意:wxPython Phoenix目前处于测试阶段,并没有Classic版本的所有小部件。

什么是wxPython发布系列?

wxWidgets项目采用了Linux Kernel项目使用的发布模型,其中存在交替的发布集,其中一组被认为是“稳定的”而下一组被认为是“开发”。对于wxWidgets,“稳定”和“开发”不是指bugginess,而是指API的稳定性和向后兼容性。

  • 稳定 :在系列的持续时间内,不会修改现有API,尽管可以添加新的非虚拟类方法等。通过不允许任何修改内存大小或类和结构布局的更改来维护C ++库的二进制兼容性。这可以并且经常对稳定版本系列中可以执行哪些类型的增强或错误修复施加限制,但是这实际上仅影响C ++层,因为Python向后兼容具有略微不同的内涵。

  • 开发 :开发系列发行版的主要目的是添加新功能或纠正由于二进制兼容性问题而无法在稳定系列中纠正的问题,所有这些都是为了创建下一个稳定系列。因此,在开发系列的持续时间内,允许根据需要修改或删除API,尽管大多数时候C ++源代码级兼容性是通过弃用的重载函数或宏等来维护的。对于wxPython,这通常意味着将会是源代码级别的不兼容性,因为没有重载或宏,并且为了支持新版本的API,有时必须删除旧版本。

由于二进制兼容性问题,wxWidgets / wxPython的最新开发版本通常比上一个稳定版本系列的最新版本更少。然而,在开发系列中的版本之间,API可能正在发生变化或发展。

版本号如何工作?

对于发行版,wxPython使用4组件版本号。虽然这看起来很像在其他开源项目中使用版本号,但有一些细微的差别。因此,对于某些版本的ABCD,您可以推断出以下内容:

  1. 发布系列 :版本号( AB )的前两个组件代表发布系列,如果B组件是偶数,那么它是一个稳定的系列,如果它是一个奇数,那么它是一个开发版本系列。例如,2.4,2.6和2.8是稳定的,并且API在每个系列中或多或少地被冻结,2.3,2.5和2.7是开发,并且允许API和功能根据需要改变或发展。

因此,一个稳定系列与下一个稳定系列之间可能存在相当大的变化(例如2.4到2.6),这通常会导致人们失望,因为在其他项目中,该组的变化会导致版本号的第一个组成部分发生变化。相反,您应该将AB的组合视为该版本的主要编号。

  1. 版本号 :版本号(C)的第三个组件代表发行版系列中的一个版本。例如,2.5.0,2.5.1,2.5.2,2.5.3 ......是2.5版本系列中的所有版本。 (并且因为在这种情况下它是一个开发系列,然后2.5.3的API和功能已经发展到与2.5.0中不同的地方。)C ++ wxWidgets版本通常在这里停止并且仅发布ABC版本。

  2. 子版本号或wxPython版本:版本号(D)的第四个组件用于表示官方wxWidgets版本之间的子版本或增量版本。这些版本包括对wxPython可能暴露的wxWidgets错误的修复,或者对wxPython很重要的次要增强。这不是一个任意的wxWidgets快照,而是一个经过测试的代码版本,除了源代码库之外,还没有wxWidgets提供的修复和增强功能。

资料来源: https//wiki.wxpython.org/ReleaseSeries