官方文档地址:wxpython.org,此文档记录了阅读官网文档过程的翻译
wxPython最新消息。
RSS源。
wxPython 4.2.2 Released
wxPython团队——2024-09-11 00:00 ——评论
wxPython 4.2.2现已在PyPI上发布,部分附加文件可在Extras中找到。
本次发布的变更内容:
- 本次发布的版本是基于wxWidgets v3.2.6的release标签构建的。这是首次使用GitHub而不是buildbots来构建的版本。如果在使用预编译的二进制文件(wheels)时遇到任何问题,请及时反馈
- 通过升级sip和waf,修复了Python 3.12的兼容性问题(退出时发生segfault)
- 修复了更多的wx.lib类中的浮点数/整数转换问题(#2415、#2417、#2429、#2470、#2528、#2542)
- wx.lib.DirBrowseButton新增了initialValue参数(#2430)
- 修复了wxImage.Clear()(#2433)
- 修复了AuiNotebook标签中文字模糊的问题(#2360)
- GridWithLabelRenderersMixin添加了对冻结行和列的支持(#2436)
- demo:ShortcutEditor:修复了损坏的GetMenuBar()的调用。(#2412)
- 为DataViewCheckIconTextRenderer添加了适当的支持(#2425)
- 移除了过时的macOS逻辑,改为使用wx.SystemSettings来选择颜色(#2018)
- 使用新的tarfile.extractall()过滤器进行更安全的tarfile提取(#2443)
- 修复了wx.lib.agw.persist_handlers中的拼写错误(#2469)
- 修复了当字符串中包含表情符号时的 'str' 到 'wxString' 的转换问题(#2446)
- 在进行isbuiltin检查之前使用unwrap(#2487)
- 在加载视角(视角指的是一个布局或窗口的特定状态,包括窗口的大小、位置、可见性等)时保留agw.aui的窗格图标(#2494)
- wx.agw.aui:不在窗口关闭事件被否决时取消初始化AuiManager(#2460)
- 纯Python AUI:使所有平台的行为更加一致(#2501)
- wx.agw.aui。在所有窗格信息重新计算其最佳大小后,将布局作为最后一步执行(#2500)
- 针对Python 3.12的语法警告进行了额外的修复(#2502)
- 修复了wx.lib.agw.ribbon.RibbonButtonBar的DeleteButton函数(#2511)
- UltimateListCtrl:增加了对于ULC_AUTO_CHECK_PARENT的支持(#2518)
- 移除了对distutils的依赖(#2519)
- 改进了wx.lib.agw.FlatMenu的内存使用(#2373)
- 支持NumPy 2.0(#2580,2591)
- 修复了CustomTreeCtrl的EditLabel方法不自动选择全部文本的问题(#2549)
- 修复了UltimateListControl中控件绘制位置错误的问题(#2410)
- 修复了wx.lib.agw.aui有时会显示“幽灵”停靠指南的问题(#2364)
- 修复了ThumbnailCtrl的SetSelection方法在尝试滚动时引发异常的问题(#2345)
wxPython 4.2.1 Released
wxPython团队——2023-06-07 00:00——评论
"尺寸并不重要。" (尤达)
尤达的这句经典台词“Size matters not.”(尺寸并不重要)出自电影《星球大战:第五集——帝国反击战》。在这部电影中,尤达试图教导卢克·天行者不要被物体的大小所限制,而要相信原力的力量。
wxPython 4.2.1现已在PyPI上发布,部分附加文件可在Extras中找到。
本次released的最大变化是增加了对Python 3.11和Python 3.12(beta)的Mac和Windows构建版本的支持。此外,用于 Linux 的预编译二进制文件(wheels)所使用的发行版也进行了更新,这些文件可在extras库中找到,其中一些包括了Python 3.11的构建版本。
wxPython 4.2.0 Released
wxPython团队——2022-08-07 00:00——评论
“关于我死亡的谣言只是略微夸大了一点。”
“Rumors of my death are only slightly exaggerated” 这句话出自美国著名作家 马克·吐温(Mark Twain)。这句话是他在回应一篇关于他死亡的错误报道时说的。1897年6月,纽约的报纸《纽约先驱报》(New York Herald)错误地报道了马克·吐温的健康状况,称他“病重且可能即将去世”,并提到他失去了理智和财富。
马克·吐温当时正在欧洲旅行,他通过《纽约日报》(New York Journal)回应了这一报道,说出了这句经典的话:“The report of my death was an exaggeration.”(关于我死亡的报道被夸大了。)。后来,这句话在不同的报道和回忆中被改写为“Reports of my death are greatly exaggerated”(关于我死亡的报道被大大夸大了)。
这句话后来成为了马克·吐温的名言之一,经常被引用,用以表达某人对关于自己死亡或困境的不实报道的幽默回应。
wxPython 4.2.0现已在PyPI上发布,部分附加文件可在Extras中找到。
本次release的改进和更新:
- 是的,距离上次发布已经过去非常长的时间了。我不是死了,只是在休假。我花了好一段时间才适应新的工作,然后又似乎一直处于紧张的冲刺模式,以推动产品完成几个发布周期。我不能说事情已经完全恢复正常了,但至少我现在知道自己在做什么。大部分时间是这样啦。
- 本次发布的版本是基于wxWidgets 3.2.0的release标签构建的。
- 对构建脚本进行了一些调整,以确保在非 Windows 平台上,默认使用的编译器和编译标志与wxWidgets使用的完全一致(同时添加了Python所需的标志)。如果需要,可以通过在环境中设置CC和CXX来覆盖默认的编译器命令。#1247
- 在Windows上,用于定位和设置MSVC编译器环境的构建代码不再依赖于distutils,而是改用setuptools中更现代的代码。这使得编译器的灵活性大大提高,现在可以使用2015年至2022 年及以后版本Visual Studio 来构建wxPython。
- 现在使用SIP 6来生成包装代码。与之前的版本相比,SIP 6不再是一个独立的可执行文件,而是一个需要安装在构建所用的Python环境中的Python包。为了确保安装正确的SIP版本,已在requirements/devel.txt文件中添加了相关依赖。wx.siplib模块的代码不再保留在代码仓库中,而是在构建过程中生成。
- 对wx.App.InitLocale方法进行了更改。具体来说,现在该方法仅执行
locale.setlocale(locale.LC_ALL, "C")
,以撤销 Python(3.8及以上版本,Windows)所做的操作。这使得wxWidgets可以以未初始化的区域设置启动。#1637 - 修复了
time_t
在Windows上始终被当作32位值处理相关的问题。#1910 - 新增wx.FullScreenEvent和wx.EVT_FULLSCREEN。
- 遗留问题,移除了仅适用于macOS的旧版wx.webkit模块。
- 修复了windows上使用Python 3.10版本构建wxPython的问题。#2016
- 修复了PyProgress在Windows上由于无效的布局标志导致的问题。#1985
- 修复了demo中的“More Grid Features”问题。
- 许多处理位图的控件已改为使用wx.BitmapBundle对象而不是wx.Bitmap。这是wxWidgets为适应高分辨率显示(如Hi-DPI显示器)而实现的机制。你可以将不同尺寸(但内容相似或成比例缩放)的位图列表加载到wx.BitmapBundle中,控件可以根据显示密度选择合适的位图。现有的代码应该可以继续将wx.Bitmap传递给控件构造函数或SetBitmap等方法,因为wxPython会自动将wx.Bitmap转换为包含单个图像的wx.BitmapBundle。
- 为wx.grid添加了新事件,EVT_GRID_ROW_MOVE。
- 修复了wx.lib.agw.multidirdialog中的路径问题。#2120
- 修复了eventwatcher的checkAll(check=False)问题。#2139
- 修复了在网格标签点击时引发异常的问题。#1841
- 修复了大量与Python 3.10相关的问题。在Python 3.10中,扩展函数不再接受非整数参数(例如浮点数),这些参数只能通过损失精度来转换为整数。在wxPython的纯Python类和demo中,通过在将参数传递给 wxWidgets之前显式地将它们转换为整数,解决了大多数这类问题。虽然存在精度损失,但这种情况在之前版本中(自动地)就已经发生了,因为大多数wxWidgets的DeviceContext函数都是使用整数进行操作的。
- 修复了PlotCanvas在Linux上绘制点标签的问题。
- 修复了wx.adv.TaskbarIcon的GetPopupMenu方法的覆盖问题。#2067
- 修复了在深色主题下lib.plot中文本不可见的问题。
- 添加了新的按钮类型:ShowHideToggleButton。类似于ToggleButton,但与之关联的“菜单”(一个窗口或布局管理器)会在按钮切换时显示或隐藏。包括设置活动和非活动前景/背景颜色的方法。
- 修复了事件解绑顺序是FIFO(先进先出)的问题。#2027
- 添加了对PDF查看器按钮面板布局的自定义支持。
- 支持更新的PyMuPDF版本。#2205
- IntCtrl:将默认颜色设置为wx.NullColour,以便使用默认颜色。#2215
- 将PopupControl修改为遵循传递给其init方法的所有参数。#2218
- 修复flatmenu.py的移除和销毁项目。#2219
- 使用MinGW工具链构建wxPython的过程已得到了一定程度的简化。#2211
wxPython 4.1.1 Released
wxPython团队——2020-11-21 00:00——评论
"感恩之心"
wxPython 4.1.1现已在PyPI上发布,部分附加文件可在Extras中找到。
本次release的改进和更新:
- 这一点本应在上次版本发布的说明中提及,但遗憾的是,它被遗漏了。如今,wxWidgets在向布局管理器(sizer)添加条目时会对传入的标志进行验证,以确保这些标志对于该尺寸器的类型来说是正确的。如果给定的标志不合理,例如在水平框尺寸器中使用水平对齐标志,那么就会引发wxAssertionError错误。
- 修复了EVT_STC_AUTOCOMP_SELECTION_CHANGE事件绑定器缺失的问题。#1613
- DataViewModel.HasValue方法可以被重写,并且它会告知DataViewCtrl某一项及其列是否有数据。如果HasValue返回False,那么对于该项/列的GetValue方法将不会被调用。这使得能够区分真正空的单元格,以及即使值为空字符串但实际上是有值的单元格。#1600
- 添加了一个标志,该标志允许在UltimateListControl类中阻止项目拖动。PR#1620
- 在UltimateListControl的通知事件中添加列索引。PR#1630
- 为UltimateListControl.GetScrollPos方法添加了orientation参数。PR#1632
- wx.lib.agw.aui.AuiNotebook的RemovePage()方法现在会隐藏被移除的页面,因此如果该页面要在其他地方再次使用,则需要重新将其显示出来。PR#1668
- 修复了在Python环境下可能修改
bytes
对象的问题。PR#1680 - 添加了wx.lib.agw.aui.EVT_AUI_PANE_CLOSE事件,该事件会在AUI(AGW版本)面板关闭后发出(是在面板已经关闭之后,而不是在它即将关闭时发出,即将关闭时发出的事件并非此EVT_AUI_PANE_CLOSE)。PR#1628
- 公开了wx.DC类的GetGraphicsContext和SetGraphicsContext方法。根据不同的平台以及设备上下文(DC)的类型,可能会有一个用于实现该设备上下文的wx.GraphicsContext对象。如果存在这样的对象GetGraphicsContext方法可用于访问它。在尝试使用该方法的返回值之前,请务必检查其是否为None。
- 简化了wx.App.InitLocale方法的实现。更多信息请参阅《迁移指南》。
- 添加了wx.lib.agw.aui.AUI_DOCKART_HINT_WINDOW_BORDER_COLOUR常量,这样提示窗口的边框颜色也能进行主题设置了。
- wx.lib.mixins.listCtrl.CheckListCtrlMixin现在已过时,因为wx.ListCtrl有了新功能,其功能与CheckListCtrlMixin基本相同。实际上,在方法名称上存在一些重叠,这可能会给某些用例带来困扰。建议不再使用CheckListCtrlMixin,直接使用wx.ListBox的功能。你需要调用EnableCheckBoxes方法来启用该功能,并且可能需要更改一些事件处理程序或重载方法。
- 现在,wx.html2.WebView能够使用微软的Edge浏览器组件作为其后端渲染器。与原来的IE 11后端相比,这应该能提升Windows系统上WebView控件的性能,并且使其与其他平台上的WebView更为一致。使用该后端需要终端用户的计算机上安装有较新版本的Edge浏览器。
- 添加了wx.Image.ConvertToRegion方法。该方法允许你根据一张图像以及一种指定颜色来创建一个 wx.Region,如果该图像带有蒙版,也可依据蒙版来创建。添加此方法原本是为了解决wxMac中的一个错误,但即便在该错误修复之后,保留这个方法似乎也很有价值。
- 为wx.LogNull添加了缺失的上下文管理器方法。 #1842
- 对agw.ThumbnailCtrl中的ScrolledThumbnail进行了重构,以便它能够在ThumbnailCtrl之外使用。
wxPython 4.1.0 Released
wxPython团队——2020-04-24 00:00——评论
"逃离隔离区"
wxPython 4.1.0现已在PyPI上发布,部分附加文件可在Extras中找到。
从本次版本发布开始,wxPython在构建时所依赖的wxWidgets源代码将跟踪wxWidgets主分支(版本 3.1.x),该版本的wxWidgets源代码也包含在wxPython源码存档中。
这将是最后一个包含适用于Python 2.7的二进制文件的版本。在一段时间内,代码可能仍然能够编译并与Python 2.7兼容,但不会再特意努力维持这种兼容性了。
本次release的改进和更新:
- 在demo里为wx.Font.AddPrivateFont添加一个案例。
- 为wx.TextCtrl中的OSXEnableAutomaticQuoteSubstitution(在macOS上启用自动引号替换)、OSXEnableAutomaticDashSubstitution(在macOS上启用自动破折号替换)和 OSXDisableAllSmartSubstitutions(在macOS上禁用所有智能替换)方法添加了包装器。同时,在 wx.App中添加了OSXEnableAutomaticTabbing(在macOS上启用自动制表符功能)方法 。
- 添加了wx.ColourDialogEvent,wx.DCTextBgColourChanger,wx.DCTextBgModeChanger,wx.grid.GridCellDateRenderer,wx.grid.GridCellDateEditor,wx.SystemAppearance等等。
- wxWidgets和wxPython中许多已弃用的项目正在被移除或已经被移除。请务必在启用警告功能的最新4.0.x版本中测试你的代码,这样你就能知道需要更改哪些类、方法或函数调用。
- 对wx.lib.calendar的bug修复:现在可以跨月份边界进行按键导航;按键导航现在会设置日期并触发EVT_CALENDAR事件;设置器应用程序编程接口(API)现在能够正确设置日期。#1230
- 在GTK3端口上运行时,切换为在窗口小部件检查工具中使用wx.Overlay来突出显示窗口小部件。
- 修复了wx.lib.agw.customtreectrl中存在的一个问题,此前该问题会导致标签编辑器可能会永远处于卡死状态)。 #1235
- 为支持的类添加了一个EnableSystemTheme方法。在Windows系统上,该方法可用于禁用wx.ListCtrl、wx.TreeCtrl和wx.dataview.DataViewCtrl等原生窗口小部件的默认系统主题。该方法在其他平台上不起作用。
- wx.WS_EX_VALIDATE_RECURSIVELY扩展样式标志已过时,因为它现在是默认(且唯一)的行为。为了保持兼容性,这个样式标志又被添加回了wxPython中,但它的值为零。你可以直接在代码中停止使用它,而不会导致行为上的任何改变。#1278
- 通过让wx.DCOverlay持有对设备上下文(DC)的引用,来修复使用wx.Overlay时有时会出现的崩溃问题,以确保DCOverlay先被销毁。PR#1301
- 用Docker镜像替换了此前用于为各种Linux发行版构建wxPython的Vagrant虚拟机。
- 在wx.adv.BitmapComboBox中添加了一些缺失的方法。 #1307
- 添加了wx.svg包,该包包含用于解析SVG文件的代码,以及与wxPython集成的代码。它可以将SVG光栅化为任意大小的wx.Bitmap位图,且不会有质量损失,此外,它还可以使用图形上下文(wx.GraphicsContext)的绘图基元将SVG直接渲染到图形上下文中。 PR#1323
- 移植了经典版本中的嵌入示例,该示例展示了在一个嵌入了Python的C++ wxWidgets应用程序中如何使用 wxPython。 PR#1353
- 修复了wx.GetApp()函数,使其使用wxWidgets的全局wxApp实例,而不是维护自身的指针。这样一来,如果wxApp是由C++代码创建的,wxPython仍然能够访问到它。 #1126
- 为wx.ActivityIndicator类添加了包装器。
- 为wx.CollapsibleHeaderCtrl类添加了包装器。
- 修复了PlotCanvas中有关滚动条显示和使用方面的问题。 #1428
- 添加了wx.msw.CHMHelpController,同时还添加了一个wx.HelpController工厂函数,该函数会为相应平台创建最佳的帮助控制器实例。 #1536
- 添加了wx.adv.GenericAnimationCtrl,这样即便是在拥有原生动画类版本的平台上,也能够使用通用版本的动画类。请注意,由于为了同时支持两种类型的动画而进行了内部更改,在创建Animation对象的方式上有一些API变化。有关各种使用模式,请查看demo中的AnimationCtrl.py示例。#1579
- 为wx.grid.GridBlockCoords、wx.grid.GridBlocks和wx.grid.GridBlockDiffResult类添加了包装器,同时也为wx.grid.Grid类添加了相关的新方法。这些提供了一种与所选单元格块进行交互的新方式,其中包括wx.grid.GridBlocks中的迭代器接口,对于处理大量选定单元格组而言,这在时间和内存方面应该是一种更高效的方式。
wxPython 4.0.7.post2 Released
wxPython团队——2019-11-12 00:00——评论
“使用QTKit,还是不用QTKit……”
wxPython 4.0.7.post2现已在PyPI上发布,部分附加文件可在Extras中找到。
此次发布后的改动修改了macOS上的一个wxWidgets配置选项,这样构建过程将被强制使用AVFoundation而非QTKit。这确保了wxMediaCtrl能在macOS 10.15及更高版本上正常工作,因为在这些版本中对QTKit的所有支持都已被移除。
wxPython 4.0.7.post1 Released
wxPython团队——2019-10-28 00:00——评论
“现在还不是使用Python3的时候吗?”
wxPython 4.0.7.post1现已在PyPI上发布,部分附加文件可在Extras中找到。
此次发布后的操作只是修复了Python 2.7在numpy依赖约束方面的一个问题。#1415
wxPython 4.0.7 Released
wxPython团队——2019-10-25 00:00——评论
“再喝最后一杯就走”
wxPython 4.0.7现已在PyPI上发布,部分附加文件可在Extras中找到。
本次发布的内容主要包含从主分支反向移植过来的修复项和一些小功能。本次发布很可能是4.0.x版本系列的最后一个版本,并且肯定是最后一个支持Python 2.7的4.0.x版本。在一段时间内,它或许仍能继续为Python 2.7进行构建,但不会再额外投入精力来保持其兼容性了。
本次release的改进:
- 对wx.lib.calendar中的错误进行了修复:现在可以跨月份边界进行按键导航;按键导航现在会设置日期并触发EVT_CALENDAR事件;设置器应用程序编程接口(API)现在能够正确设置日期。 #1230
- 在基于GTK3端口运行时,切换为在“控件检查工具”中使用wx.Overlay来突出显示控件。
- 修复了wx.lib.agw.customtreectrl中的一个问题,该问题会导致标签编辑器可能会一直处于卡死状态。 #1235
- 通过让wx.DCOverlay持有对设备上下文(DC)的引用,来修复在使用wx.Overlay时有时会出现的崩溃问题,以确保DCOverlay首先被销毁。 通过让wx.DCOverlay持有对设备上下文(DC)的引用,来修复在使用wx.Overlay时有时会出现的崩溃问题,以确保DCOverlay首先被销毁。PR#1301
- 将经典版中的嵌入示例进行了移植,该示例展示了如何在嵌入Python的C++ wxWidgets应用程序中使用wxPython。 PR#1353
- 修复了wx.GetApp()函数,使其使用wxWidgets的全局wxApp实例,而非维护自己的指针。这样一来,如果wxApp是由C++代码创建的,wxPython仍然能够访问它。 #1126
- 还有其他几个拉取请求(PR)已从主分支(该分支日后将成为wxPython 4.1.0版本)反向移植过来,完整的列表可在GitHub上查看。