PyQt窗口打开后立即关闭

2024-04-30 14:33:30 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿伙计们。当我试图打开PyQt窗口时遇到问题。

下面的代码是我原始代码的一个例子。当我在import Test中导入模块并运行test.Start()时,出现以下错误:

QCoreApplication::exec: The event loop is already running

经过一番研究,我发现这是因为我已经做了一个QApplication

test.py....
import sys

def Start():
    app = QApplication(sys.argv)
    m = myWindow()
    m.show()
    app.exec_()

class myWindow():....

if __name__ == "__main__":
    Start()

然后我读到我可以像这样重写我的代码,它会修正错误:

test.py....

def Start():
    m = myWindow()
    m.show()


class myWindow():....

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    Start()
    app.exec_()

现在我不再得到QCoreApplication::exec:事件循环已经在运行错误,但是我的窗口几乎在打开后立即关闭。


Tags: 代码pytestimportappdefshow错误
2条回答

您还可以执行以下操作:

def Start():
    global m
    m = myWindow()
    m.show()

class myWindow():....

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Start()
    app.exec_()

需要保持对打开窗口的引用,否则它将超出范围,并被垃圾回收,这也将破坏基础C++对象。尝试:

def Start():
    m = myWindow()
    m.show()
    return m


class myWindow():....

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    window = Start()
    app.exec_()

相关问题 更多 >