12

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

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

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

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

5 回答 5

3

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

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

附带说明一下,如果您坚持使用 GTK+,我建议您升级到 PyGObject 和 GTK+ 3.0,因为 PyGtk+ 不再维护。

于 2013-04-04T22:43:57.413 回答
1

我也从未使用过 PyGTK,但我认为 Qt 的两个非常好的特性是:模型/视图编程和信号/插槽。如果您需要那种东西,我会说至少值得阅读有关它们的文档并在这方面比较这两个工具包。

设计师也很节省时间。促销功能--- 您可以在设计器中将您的自定义小部件替换为类似的东西,例如,您已经使用您的功能实现了自定义树视图 --- 非常方便。您可以使用设计器显示常规树视图,但在导出时使用您的自定义类。

文档很棒。

编辑:您可以直接使用 Qt 文档。我一直在使用 PySide 在 python 中进行编程,并且只有少数情况下我实际上需要特定的文档。虽然存在

于 2013-03-03T16:35:07.407 回答
1

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

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

  • Qt 明确不支持除主 GUI 线程之外的任何线程修改 GUI。您可能会以这种方式导致崩溃。但是,正如 BlaXpirit 所提到的,有多种非常简单的线程间通信机制,例如信号传递。

于 2012-08-03T21:59:23.877 回答
1

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

Qt 肯定有您正在谈论的“treeview/tableview”,您可以将“单元格”作为您的自定义小部件(我现在正在研究这个主题)。Qt 对线程进行了很多思考,因此工作线程可以轻松使用信号/槽机制。是的,您可以通过应用样式表或子类化来修改现有的小部件。

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

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

于 2012-06-15T12:35:53.200 回答
1

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

于 2012-08-10T10:28:51.040 回答