PyQt比PyGTK有什么优势,反之亦然?

2024-06-16 11:59:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个应用程序的图形用户界面将被改造为符合人体工程学的原因。 它是用PyGTK编写的,我想知道我是否应该切换到PyQt来简化将来的开发。

这个应用程序有一个基本上是经典的UI,有按钮、工具栏、对话框等,但也有一些特定的要求:我当然需要创建一个基于treeview/tableview的自定义小部件(以制作一个类似电子表格的小部件),这个应用程序有很多更新GUI的工作线程。

我正在就以下两点征求意见:

  • 至于创建自定义小部件,PyQt是否提供了比PyGTK更好的机制,特别是对现有小部件的轻微修改。
  • 在使用PyGTK时,我遇到了由工作线程更新GUI的问题(即使正确使用threads_init()和threads_enter())。PyQt在这一点上好些吗?

Tags: 应用程序ui部件原因gui工程学图形用户界面线程
3条回答

我不能比较,因为我不使用GTK,但我建议Qt。

Qt绝对有你所说的“treeview/tableview”,你可以把“cells”变成你的定制小部件(我现在正在研究这个主题)。Qt是在大量考虑线程的情况下生成的,因此工作线程可以轻松地使用信号/插槽机制。是的,您可以通过应用样式表或子类化来修改现有的小部件。

关于PyQt,我不推荐它,因为许可问题。PySide对我来说似乎是一个更好的Qt→Python绑定:它可以在商业应用程序中自由使用,并且在API中有一些微小的优势(但在其他方面它与PyQt完全兼容)。

Qt是跨平台的,使用cx_Freeze部署PySide应用程序非常容易;应用程序的用户根本不需要安装任何东西。

我也没有使用GTK的经验,但我可以提供一些答案:

  • Qt从一开始就被设计成面向对象的;它中的几乎所有内容都对子类化有极好的支持。PyQt也一样。

  • Qt显式不支持由主GUI线程以外的任何线程修改GUI。你这样很可能会引起车祸。不过,正如BlaXpirit所提到的,有很多非常简单的线程间通信机制,比如信号传递。

我最喜欢GTK+,因为(至少对我来说)它看起来更好。然而,PyQt和变体(例如PySide)确实有一组非常大的附加功能,包括WebKit引擎、XML解析器、SQL支持等等。

如果你只是想看看,我会说GTK+/PyGObject。如果您打算使用PyQt拥有的任何东西,请使用PyQt。

另外,如果您坚持使用GTK+,我建议您升级到PyGObject和GTK+3.0,因为PyGtk+不再被维护。

相关问题 更多 >