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

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

2025-06-11 11:30:08作者:舒璇辛Bertina

Toga 是一个基于 Python 的跨平台原生 GUI 工具包,它允许开发者使用相同的代码库为多个平台(包括 Windows、macOS、Linux、iOS、Android 和 Web)构建应用程序。Toga 的设计哲学是"一次编写,到处运行",同时保持每个平台的原生外观和感觉。

主要新特性

布局与样式增强

Toga 0.5.0 在布局和样式方面带来了多项重要改进:

  1. 新增 justify_content 属性:这个样式属性允许开发者沿盒子的主轴对齐子元素,提供了更灵活的布局控制。

  2. 间隙(gap)属性:现在可以在相邻的子元素之间添加空间,这对于创建整洁的界面布局非常有用。

  3. 简化的行和列创建:新增了 toga.Rowtoga.Column 作为 toga.Box(style=Pack(direction=...)) 的快捷方式,使代码更加简洁。

  4. 样式属性直接访问:现在可以直接在控件构造函数中传递样式属性,或者作为属性访问,无需显式使用样式对象。

  5. 边距属性改进Pack.margin 属性(及其已弃用的别名 padding)现在可以通过括号表示法访问,如 style["margin"]

窗口管理增强

  1. 窗口状态控制:应用现在可以检测和设置窗口状态,包括最大化、最小化、正常、全屏和演示模式。

  2. 窗口焦点和可见性响应:窗口现在可以响应焦点和可见性的变化。

  3. 演示模式重命名:为避免与窗口全屏模式混淆,"应用全屏模式"已更名为"演示模式",相关API也相应更新。

平台特定改进

  1. GTK4实验性支持:新增了对GTK4的初步实验性支持,可通过设置环境变量 TOGA_GTK=4 启用。

  2. Android相机方向:Android相机现在可以描述它们面对的方向(如果已知)。

  3. GTK位置服务:Toga GTK现在通过集成GeoClue和XDG位置门户支持位置服务。

  4. WebView增强WebView 控件现在支持cookie的检索。

  5. 跨平台透明背景:在WinForms和iOS上,多个控件现在默认具有透明背景。

重要变更与兼容性说明

  1. 样式属性重命名:Pack的 paddingalignment 属性已分别重命名为 marginalign_items,以匹配CSS标准。旧名称仍然可用但已弃用。

  2. 窗口状态限制show()hide() API现在不能在窗口处于 MINIMIZEDFULLSCREENPRESENTATION 状态时使用。

  3. 生成器事件处理程序弃用:使用生成器作为事件处理程序的方式已被弃用,建议改用异步协程。

  4. 实现创建方式变更:小部件现在通过 _create() 方法创建和返回它们的实现,这对自定义小部件的开发方式有影响。

  5. Travertino库变更:作为Toga样式系统基础的Travertino库现在由Toga发布流程管理,并带来了一些API变更。

性能与稳定性改进

  1. 内存泄漏修复:iOS后端的小部件在销毁时不再泄漏内存。

  2. DPI缩放改进:Windows上的DPI缩放问题已得到显著改善。

  3. 布局优化:如果窗口大小在调整大小请求后未改变,将不再触发窗口内容的布局。

  4. Android原生外观保留:在Android上设置自定义背景颜色现在会保留原生外观和感觉。

文档与示例增强

  1. 教程扩展:教程3已扩展,解释了浏览器示例的限制并建议了一些扩展活动。

  2. API设计原则:新增了Toga API设计原则的总结文档。

  3. Web后端截图:为Web后端添加了小部件截图。

总结

Toga 0.5.0 是一个重要的版本更新,带来了大量新功能、改进和错误修复。从布局控制的增强到窗口管理的完善,再到各平台特定功能的提升,这个版本使Toga成为一个更加强大和易用的跨平台GUI开发工具。对于现有用户,需要注意一些向后不兼容的变更,特别是样式系统相关的重命名和实现创建方式的调整。新用户则可以从更直观的API和更完善的文档中受益。

随着GTK4支持的引入和各平台特性的持续完善,Toga正朝着成为Python生态中最全面的跨平台GUI解决方案之一稳步前进。

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

项目优选

收起
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
51
14
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
289
814
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
483
387
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
110
194
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
58
139
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
364
37
cjoycjoy
一个高性能、可扩展、轻量、省心的仓颉Web框架。Rest, 宏路由,Json, 中间件,参数绑定与校验,文件上传下载,MCP......
Cangjie
59
7
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
974
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
96
250
CangjieMagicCangjieMagic
基于仓颉编程语言构建的 LLM Agent 开发框架,其主要特点包括:Agent DSL、支持 MCP 协议,支持模块化调用,支持任务智能规划。
Cangjie
578
41