我正在第一次在PyQt5
中实现一个非常简单的GUI,它嵌入了matplotlib
图和几个用于交互的按钮。
我真的不知道如何使用类,所以我犯了很多错误,即使功能很简单,我必须在小修正和验证之间进行很多迭代。
出于某种原因,我想调试,然而,由于在任何其他尝试中,python内核死亡并且需要多次重启(全部自动完成),因此整个过程变得更加缓慢。
也就是说,每当我尝试一些可能持续5秒的东西时,我最终会花一分钟时间。
谁知道在哪里可以看到导致这些不断死亡/重生圈子的原因?
我一直在使用spyder
一段时间以前我从未经历过这种行为,所以我觉得它可能与PyQt
有关,但这就是我能走多远。
这个问题跟踪here
你可以在那里学习所有细节,但简而言之,当从spyder
内部运行时 - 它本身就是一个QApplication
,主循环应该是:
if __name__ == '__main__':
import sys
from PyQt5 import QtWidgets
fig1 = Figure()
if not QtWidgets.QApplication.instance():
app = QtWidgets.QApplication(sys.argv)
else:
app = QtWidgets.QApplication.instance()
main = Main()
main.addmpl(fig1)
main.show()
sys.exit(app.exec_())
if/then
检查QApplication
的存在避免了一个分段错误,如果一个人试图一次启动多个实例就会发生,如here所解释的那样
我有一个类似的问题,发现我的应用程序只有在Spyder内的图形设置设置为内联时才有效。这可以在工具 - >首选项 - > IPython控制台 - >图形中完成,现在将后端更改为内联。
希望这可以帮助。