我第一次致力于在PyQt5
中实现一个非常简单的GUI,它嵌入了一个matplotlib
的情节和几个用于交互的按钮。
我真的不知道如何使用类,所以我犯了很多错误,即即使功能很简单,我也必须在小更正和验证之间进行很多迭代。
出于某种原因,我想调试,但是,整个过程要慢得多,因为在任何其他尝试中,python内核都会死亡,并且需要重新启动(全部自动完成(几次。
也就是说,每次我尝试应该持续 5 秒的东西时,我最终都会花一分钟。
有人知道在哪里寻找导致这些不断死亡/重生循环的原因吗?
我已经使用spyder
一段时间了,我以前从未经历过这种行为,所以我很想这可能与PyQt
有关,但这就是我能走多远。
此问题在此处跟踪
您可以在那里了解所有细节,但简而言之,当从 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_())
对QApplication
是否存在的if/then
检查避免了分段错误,如果尝试一次启动多个实例,则会发生分段错误,如此处所述
我遇到了类似的问题,发现我的应用程序仅在Spyder内部的图形设置设置为内联时才有效。这可以在工具 -> 首选项 -> IPython 控制台 -> 图形中完成,现在将后端更改为内联。
希望这有帮助。