我正试图通过进行一些gui开发来巩固我的python知识,我应该尝试Tkinter还是直接跳到PyQT以获得更好的IDE支持?
如果你的主要目标是巩固你的python知识,我推荐Tkinter。它更简单,而且已经安装了Python。
如果你想构建复杂的应用程序,我推荐PyQt,它的功能要强大得多。
我发现PyQt5和Tkinter在长时间运行的循环和处理GUI冻结方面有很大的区别。
在Tkinger和PyQt5中,GUI将在长循环期间冻结,因为没有调用GUI更新过程。为了在Tkinter中修复此问题,我添加了以下代码:
Tkinter解决方案
def update_app():
root_winwod.update_idletasks()
root_winwod.update()
for x in range(10000):
if x % 100 = 0: # Triggers after 100 iterations. You can change this for your needs.
update_app()
# The rest of your loop code here
PyQt5解决方案
对于PyQt5,你可以调用QtCore.QCoreApplication.processEvents()
,但所有网站都说不要这样做。相反,您必须创建一个子进程,使用多进程创建多进程安全变量。Manager(),确保在访问变量时锁定和解锁变量,使用subprocess.check_output()尝试捕获子流程中的错误,添加Qtimer()定期更新UI,确保在应用程序退出时终止进程,依此类推
对于简单的应用程序,我建议运行Tkinter。运行子流程很好,只需要大量额外的编码和精力来确保一切正常。