用Python开发GUI:Tkinter与PyQt [关闭]


94

如果要使用Python开发一个用户界面,该选择哪个:TkInter或PyQt?

我刚开始使用TkInter,就能够使用一些简单的UI来处理基本的小部件,例如标签,按钮,文本框等。只是好奇地知道PyQt与TkInter相比有多好?

干杯


3
另外,请注意,除了TkInter和PyQt之外,还有许多其他选项可用。wxPython的是一个立刻浮现在脑海,但在一个更完整的列表wiki.python.org/moin/GuiProgramming并列出比较常见的GUI包的短名单python.org/doc/faq/gui
esm

Answers:


77

如果您正在开发一些严肃的PyQt,尤其是您将学到的东西直接转换为使用其他语言的Qt(如果需要)的话,那么Qt可能是目前最好的跨平台界面工具包。

只有两个实际(潜在)缺点:

PyQt仅在GPL下可用。这意味着,如果您发布代码,则必须根据兼容许可,诺基亚GPL例外条款或商业许可(需要付费)才能使用该代码。这与Qt相反,后者现在可以在LGPL下使用。

Python安装默认不包括PyQt。您将必须自己打包该库。(关于Windows和OS X,Ars Technica上有一篇不错的文章。)


5
对于开源,PyQt会向GPL授予一个例外,该例外指定您可以使用的许可证列表。可以在此处找到该异常的全文,并在PyQt源代码包中包含一个副本。 riverbankcomputing.co.uk/software/pyqt/license doc.trolltech.com/4.4/license-gpl-exceptions.html
sunqiang

对,谢谢 我加了一条纸条。
Sam DeFabbia-Kane

16
诺基亚已开始构建一个名为PySide的库,该库提供与PyQt几乎相同的功能,但使用LGPL。目前仅在基于* NIX的系统上可用。但是您几乎可以在导入中将“ PyQt4”与“ PySide”交换,并使(几乎)所有功能正常工作。pyside.org
詹姆斯

诺基亚GPL例外的链接已失效。
Stevoisiak

1
截至2019年,PyQt5已发布,PySide2支持LGPL下的大多数相同Qt绑定。
LightCC

40

PyQt现在是我们的主要GUI工具包,经过1年的开发,我不想再谈其他任何事情。它是稳定,成熟,跨平台且完全原生的。甚至系统对话框(例如,打开文件)也是您的操作系统使用的对话框。

我调整了XP主题,现在相应地调整了我的应用程序外观。这会产生非常专业的外观,无法与之类的工具包媲美Swing。该API范围很广,并且超出了诸如小部件之类的纯GUI的范围。它支持数据库连接性,打印,线程化(我用过它,并且像一个咒语一样工作),...我什至用它来生成PDF(不需要其他外部库)。我会推荐Mark Summerfield的书,《使用Python和Qt进行快速GUI编程》,以帮助您快速入门。请记住,Qt附带了一个GUI生成器(Qt设计器),这是我使用过的最好的工具(并且我尝试了很多)。
我什至使用此构建器来创建要显示给用户的模型(就这么简单!)。

我在这里向其他2个开发人员介绍了它,却没有听到他们抱怨...


10
注意:Qt 看起来只是本地的。实际模拟了用户界面元素(至少在Mac OS X上)。据报道,有时由于这种模拟,图形元素的“感觉”很奇怪。
Eric O Lebigot

22

tkinter用于具有简单界面的小型应用程序。我非常喜欢它,即使缺少好的WYSIWYG编辑器对于较大的应用程序来说也可能是个问题。

对于大型应用程序,PyQt可能是一个更好的选择。它有一个非常好的屏幕设计师,但是许可可能会成为问题。

最后,wxPython可能是一个不错的选择,因为它没有这些缺点。


7
我已经用tk毫无问题地编写了大型商业应用程序。它的缩放比例非常好。如果您的数据集遇到了数百万个项目,这并不是特别好,但是很少有人开发这样的应用程序。
布莱恩·奥克利

2
感谢Bryan的反馈。这个答案是很久以前做出的,现在我对Tk有更好的经验,并且我越来越喜欢它。
luc

我已经更新了答案。更多的开发工具而不是可扩展性问题
luc

8

PyQt确实很容易学习,并且Qt的文档也适用于PyQt,并且还有.NET和Java的端口。因此,它是童话的跨平台和跨语言的。您还可以将PyQt集成到Eric IDE中

对CSS样式的支持也非常出色。

查看新的OpenSuSE安装程序,以了解如何使用它。



1

我使用PyQt。它是跨平台的,易于使用且可靠。

我稍微使用了TkInter,但没有发现任何使TkInter比PyQt更好的地方。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.