首页
/ Toga 0.5.0 发布:跨平台GUI工具包的全面升级

Toga 0.5.0 发布:跨平台GUI工具包的全面升级

2025-06-11 16:45:48作者:平淮齐Percy

Toga 是一个基于 Python 的跨平台原生 GUI 工具包,它允许开发者使用 Python 代码构建本地应用程序界面。作为 BeeWare 项目套件的一部分,Toga 旨在为 Python 开发者提供简单易用的原生界面开发体验。最新发布的 Toga 0.5.0 版本带来了多项重要改进和新特性,显著提升了开发体验和功能完整性。

核心特性增强

布局与样式系统升级

Toga 0.5.0 对布局和样式系统进行了重大改进。新增的 justify_content 样式属性允许开发者沿盒模型的主轴对齐子元素,这为界面布局提供了更精细的控制能力。同时引入的 gap 属性则简化了相邻子元素之间间距的设置,使开发者能够更直观地控制元素间的空白。

样式系统的改进还包括将 paddingalignment 属性重命名为更符合 CSS 标准的 marginalign_items。虽然旧名称仍被保留以保持向后兼容性,但新名称更符合现代前端开发的惯例。此外,样式属性现在可以直接通过构造函数传递或作为属性访问,无需显式使用 style 对象,这大大简化了代码编写。

窗口管理功能强化

窗口管理功能在此版本中得到了显著增强。开发者现在可以检测和设置窗口的各种状态,包括最大化、最小化、正常、全屏和演示模式。值得注意的是,"全屏模式"的概念被重新命名为"演示模式",以避免与窗口级别的全屏模式产生混淆。

窗口现在能够响应焦点和可见性的变化,这为创建更交互式的应用程序提供了可能。例如,开发者可以在窗口获得或失去焦点时执行特定操作,或者在窗口变为可见或隐藏时更新界面状态。

平台特定改进

各平台后端都获得了针对性的改进:

  • GTK 后端增加了对位置服务的支持,通过集成 GeoClue 和 XDG Location Portal 实现
  • Android 相机现在能够描述其朝向方向(如果已知)
  • WinForms 和 iOS 上的多个小部件现在默认具有透明背景
  • 初步实验性支持 GTK4 已添加到 GTK 后端,可通过环境变量启用

重要变更与兼容性说明

向后不兼容变更

Toga 0.5.0 引入了一些需要开发者注意的向后不兼容变更:

  1. 窗口状态管理 API 进行了重命名,enter_full_screenexit_full_screen 被替换为 enter_presentation_modeexit_presentation_mode
  2. 生成器作为事件处理程序的用法已被弃用,建议改用异步协程
  3. 小部件实现创建方式改为通过 _create() 方法
  4. 在窗口处于特定状态(如最小化、全屏或演示模式)时,不能再调用 show()hide() API

样式系统变更

样式系统的变更尤其值得注意:

  • Packpadding 属性已更名为 margin,以更准确地反映其实际功能
  • alignment 属性被 align_items 取代,并采用 CSS 兼容的值(START、CENTER、END)
  • 新增了 horizontal_align_itemsvertical_align_items 等明确描述布局方向的别名属性

新组件与功能

WebView 增强

WebView 组件现在支持 cookie 的检索功能,这为需要处理 web 会话的应用程序提供了更多可能性。开发者现在可以更全面地控制 web 内容与原生应用程序之间的交互。

简化的布局组件

新增的 toga.Rowtoga.Column 作为 toga.Box 的快捷方式,使创建行列布局更加直观。这些组件内部使用 Pack 样式并设置适当的方向,减少了样板代码。

实验性 Positron 后端

0.5.0 版本引入了 Positron 后端的初始支持,这是一种将 web 视图包装在原生外壳中的应用程序模式(类似于 Electron,但使用 Python)。这为希望使用 web 技术但需要原生应用外壳的开发者提供了新选择。

底层架构改进

Travertino 整合

Toga 的样式和盒模型基础库 Travertino 现在作为 Toga 发布流程的一部分进行管理。这一变化带来了多项改进:

  • 实现了 100% 的测试覆盖率
  • 新增了 alpha 混合操作和 RGBA 到 HSLA 颜色转换的 API
  • 引入了 aliased_property 描述符以支持样式中的属性别名声明
  • Pack 样式表示现在使用数据类,使 IDE 能够更好地推断属性和类型

性能与稳定性提升

此版本包含了大量错误修复和性能改进:

  • 解决了 Windows 上的 DPI 缩放问题
  • 修复了 WinForms 上背景颜色 alpha 通道处理不正确的问题
  • 解决了 iOS 上小部件内存泄漏问题
  • 改进了 Android 上小部件的原生外观保持
  • 修复了 GTK 上窗口状态报告问题

总结

Toga 0.5.0 标志着这个 Python GUI 工具包的重要里程碑。通过引入新的布局功能、增强窗口管理、改进样式系统以及增加对新平台的支持,Toga 为 Python 开发者提供了更强大、更灵活的原生应用开发工具。虽然一些变更需要现有代码进行调整,但这些改进为框架的未来发展奠定了更坚实的基础,并使 Toga 更符合现代 GUI 开发的期望和实践。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
858
509
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
257
300
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
331
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
397
370
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
22
5