我第一次在PyQt5
中实现一个非常简单的GUI,它嵌入了matplotlib
图和几个用于交互的按钮。
我真的不知道如何使用类,所以我犯了很多错误,即使功能很简单,我必须在小修正和验证之间进行很多迭代。
出于某种原因,我想进行调试,然而,由于在任何其他尝试中,python内核都会死掉并且需要多次重启(所有这些都是自动完成的),整个过程会变得更加缓慢。
也就是说,每当我尝试一些可能持续5秒的事情时,我最终会花一分钟时间。
任何人都知道在哪里可以找到造成这些不断死亡/重生圈子的原因?
我一直在使用spyder
一段时间以前我从未经历过这种行为,所以我觉得它可能与PyQt
有关,但这就是我可以做多远去。
答案 0 :(得分:3)
跟踪此问题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所述
答案 1 :(得分:1)
我遇到了类似的问题,发现我的应用程序仅在Spyder中的图形设置设置为嵌入式时才有效。可以在工具->首选项-> IPython控制台->图形上完成,现在将后端更改为内联。
希望这会有所帮助。