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

时间:2012-06-15 09:16:24

标签: python user-interface pygtk pyqt4

我有一个应用程序,其GUI将根据人体工程学原因重新制作。 它是用PyGTK编写的,我想知道我是否应该切换到PyQt来缓解未来的发展。

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

我正在就这两点寻求建议:

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

5 个答案:

答案 0 :(得分:2)

我最喜欢GTK +,因为(至少对我来说)它看起来更好。然而,PyQt和变体(例如PySide)确实有很多额外的东西,包括WebKit引擎,XML解析器,SQL支持等等。

如果你只想看,我会说GTK + / PyGObject。如果您正计划使用PyQt所具有的任何东西,请使用PyQt。

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

答案 1 :(得分:0)

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

Qt肯定有你正在讨论的“treeview / tableview”,你可以将“单元格”变成你的自定义小部件(我现在正在研究这个主题)。 Qt是在考虑线程的情况下做出的,因此工作线程可以轻松地使用信号/插槽机制。是的,您可以通过应用样式表或子类来修改现有的小部件。

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

Qt是跨平台的,使用cx_Freeze可以轻松部署PySide应用程序;您的应用程序的用户根本不需要安装任何东西。

答案 2 :(得分:0)

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

  • Qt从头开始设计为面向对象;几乎所有内容都对子类化有很好的支持。 PyQt同样。

  • Qt显然不支持主GUI线程以外的任何线程修改GUI。你可能会以这种方式导致崩溃。正如BlaXpirit所提到的,有很多非常简单的线程间通信机制,比如信号传递。

答案 3 :(得分:0)

绝对PyQt ...有很多高级应用程序使用它...就个人而言,我正在使用KDE,所以,即使我的系统的GUI使用Qt!我也正在创建一个电子表格应用程序,我发现它比我最初想的要容易得多......但是,BiaXpirit也是对的:除非你正在开发一个开源应用程序,也许你应该使用PySide或者其他东西其他...

答案 4 :(得分:0)

我也从未使用PyGTK,但我认为Qt的两个特别好的特性是:model/view编程和signal/slots。如果你需要那种东西,我会说至少阅读有关它们的文档是值得的,并将这两个工具包与这方面进行比较。

设计师也是一个节省时间的人。 promotion feature ---你可以在设计师的自定义小部件中用类似的东西直观地替换它,例如你已经用你的函数实现了自定义树视图 - 非常方便。您可以使用设计器显示常规树视图,但在导出时使用自定义类。

docs非常棒。

编辑:您可以直接使用Qt文档。我一直在使用PySide在python中编程,只有少数实例我实际上需要特定的文档。虽然它是exists