gpt4 book ai didi

python - 关闭 PyQT 窗口后无法杀死它。这需要我重新启动内核

转载 作者:行者123 更新时间:2023-12-04 12:42:09 24 4
gpt4 key购买 nike

我想我没有正确关闭 PyQT5 窗口。我正在使用与 anaconda 一起安装的 spyder (3.3.5) 来编写 pyqt5 程序。我正在使用 qt creator 设计我的 ui 文件,我使用 pyqt 包中的 loadUi 函数加载它。代码一切正常,直到我需要关闭它。我通过关闭按钮(右上角的 x 按钮)关闭窗口。窗口本身已关闭,但控制台(或外壳)似乎卡住了,我无法给它进一步的命令或重新运行程序,而不必重新启动内核(完全关闭我的 IDE 并重新打开它)。

我曾尝试在互联网上寻找问题的解决方案,但似乎没有一个适合我。包括将 IPython 控制台 > 图形更改为自动。

编辑:还创建了一个问题: https://github.com/spyder-ide/spyder/issues/9991

import sys
from PyQt5 import QtWidgets,uic
from PyQt5.QtWidgets import QMainWindow
class Mic_Analysis(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui=uic.loadUi("qt_test.ui",self)
...
if __name__ == "__main__":
def run_app():
if not QtWidgets.QApplication.instance():
app = QtWidgets.QApplication(sys.argv)
else:
app=QtWidgets.QApplication.instance()
mainWin=Mic_Analysis()
mainWin.show()
app.exec_()
run_app()

如果有人有任何建议,我会很高兴听到他们的意见。

最佳答案

对我来说,它有助于删除“app.exec_()”命令。但是在运行代码时它会立即关闭。为了保持窗口打开,我需要将 MainWindow 实例返回到全局范围(或​​使其成为全局对象)。我的代码如下所示:

from PyQt5 import QtWidgets
import sys

def main():
if not QtWidgets.QApplication.instance():
app = QtWidgets.QApplication(sys.argv)
else:
app = QtWidgets.QApplication.instance()
main = MainWindow()
main.show()

return main

if __name__ == '__main__':
m = main()

关于python - 关闭 PyQT 窗口后无法杀死它。这需要我重新启动内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57408620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com