首页
/ Toga 0.5.1 版本发布:跨平台GUI工具包的重要更新

Toga 0.5.1 版本发布:跨平台GUI工具包的重要更新

2025-06-11 23:31:34作者:申梦珏Efrain

Toga 是一个纯 Python 编写的原生操作系统 GUI 工具包,它允许开发者使用 Python 创建跨平台的桌面和移动应用程序。作为一个轻量级但功能强大的框架,Toga 提供了对多个平台的支持,包括 macOS、Windows、Linux、Android 和 iOS,同时保持了 Python 的简洁性和易用性。

WebView 功能增强

在 0.5.1 版本中,Toga 对 WebView 组件进行了两项重要改进:

  1. 静态内容支持:现在可以在实例化 WebView 组件时直接指定静态内容,而不需要先创建一个临时文件或提供基础 URL。这一改进简化了在应用中嵌入简单 HTML 内容的流程。

  2. 内容属性增强:新增了 content 属性,允许开发者动态设置 WebView 的内容,无需提供根 URL。这使得在运行时更新 WebView 内容变得更加灵活和直观。

这些改进特别适合需要在应用中展示文档、帮助信息或简单网页内容的场景。

性能优化

0.5.1 版本对样式属性的应用流程进行了优化:

  • 减少冗余字体创建:通过优化样式应用逻辑,减少了不必要的字体对象创建,提高了应用性能。
  • 减少布局刷新:优化了样式变更时的布局刷新机制,避免了不必要的重绘操作。

开发者现在可以使用 batch_apply 上下文管理器来批量应用多个样式属性,这不仅能提高性能,还能使代码更加整洁。需要注意的是,直接向 apply() 方法传递多个参数的方式已被标记为过时,将在未来版本中移除。

新增平台支持

Web 后端在这个版本中获得了对更多组件的支持:

  • DateInput:日期选择输入框
  • ScrollContainer:可滚动容器
  • TimeInput:时间选择输入框

这些新增组件使得在 Web 环境中构建功能丰富的表单界面成为可能,进一步缩小了 Web 后端与其他平台后端之间的功能差距。

问题修复

0.5.1 版本修复了多个关键问题:

  1. Winforms 平台

    • 修复了异步事件循环在应用退出时未正确关闭的问题,避免了资源泄漏。
    • 解决了 Table 组件在失去焦点时行高亮显示不正常的问题。
  2. GTK3 兼容性

    • 恢复了对较旧 GIO 版本(2.72 之前)的支持,解决了在 Ubuntu 22.04 等基于 Debian 12 的系统上的兼容性问题。
  3. Web 后端

    • 修复了应用启动时的一些错误。
    • 解决了浏览器窗口失去焦点时可能出现的错误。
  4. 其他修复

    • 解决了与 Python 3.13.3 中异步任务 name 参数相关的崩溃问题。
    • 修正了方向性样式属性(如 margin)的类型注解。

不兼容变更

开发者需要注意以下向后不兼容的变化:

  1. 样式应用方式变更:不再推荐向 BaseStyle.apply()Pack.apply() 传递多个参数,应改用 batch_apply 上下文管理器。

  2. Canvas API 变更anticlockwise 参数已被标记为过时,在 arcellipse 方法(以及对应的绘图对象)中应使用 counterclockwise 替代。

总结

Toga 0.5.1 版本带来了多项功能增强和问题修复,进一步提升了框架的稳定性和可用性。对于正在使用或考虑使用 Toga 的开发者来说,这个版本值得升级。特别是 WebView 功能的增强和性能优化,将显著改善开发体验和应用性能。

开发者应特别注意向后不兼容的变化,特别是样式应用方式和 Canvas API 的调整,以确保平滑升级。随着 Web 后端功能的不断完善,Toga 在构建跨平台 Web 应用方面的能力也在不断增强。

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

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
179
263
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
869
514
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
130
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
295
331
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
333
1.09 K
harmony-utilsharmony-utils
harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。
ArkTS
18
0
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
22
5
WxJavaWxJava
微信开发 Java SDK,支持微信支付、开放平台、公众号、视频号、企业微信、小程序等的后端开发,记得关注公众号及时接受版本更新信息,以及加入微信群进行深入讨论
Java
829
22
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
601
58