PyQt 窗口打开后立即关闭
- 2025-04-10 09:45:00
- admin 原创
- 22
问题描述:
尝试打开 PyQt 窗口时遇到问题。
下面的代码是我的原始代码的示例。当我导入模块import Test
并运行时test.Start()
,出现了以下错误:
QCoreApplication::exec: 事件循环已在运行
经过一番研究,我发现这是因为我已经制作了一个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:事件循环已在运行错误,但我的窗口在打开后几乎立即关闭。
解决方案 1:
您需要保留对已打开窗口的引用,否则它将超出范围并被垃圾收集,这也会破坏底层 C++ 对象。尝试:
def Start():
m = myWindow()
m.show()
return m
class myWindow():....
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
window = Start()
app.exec_()
解决方案 2:
您还可以执行以下操作:
def Start():
global m
m = myWindow()
m.show()
class myWindow():....
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
window = Start()
app.exec_()
解决方案 3:
使用以下代码。据我推测,您的问题在于导入和使用“show”作为函数名称。您没有提供您在课堂上写的内容,因此很难猜测。但以下代码非常有效。;-)
祝福一切顺利,好运!
import sys
from PyQt5 import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
app = QApplication(sys.argv)
def Start():
m = myWindow()
m.showWid()
sys.exit(app.exec())
class myWindow:
def __init__(self):
self.window = QWidget()
self.window.setWindowTitle("Program Title")
self.window.setFixedWidth(600)
self.window.setStyleSheet("background: #18BEBE;")
def showWid(self):
self.window.show()
if __name__ == "__main__":
Start()
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD