gpt4 book ai didi

python - 如何关闭pyqt5中的窗口并终止程序?程序卡住了

转载 作者:行者123 更新时间:2023-12-01 01:05:32 27 4
gpt4 key购买 nike

我想在pyqt5中创建一个窗口然后关闭它。由于某种原因,程序在关闭窗口后没有退出。它被卡住了。我已经阅读了几篇相关的文章,但没有一个给出明确的答案。

我已经尝试过诸如“self.object.close()”、“app.quit()”、甚至“self.object.destroy()”之类的代码,但所有代码都以相同的方式工作。真正关闭窗口的唯一方法是单击窗口本身的 x(关闭)。但这不是我需要的行为。我想使用我的代码关闭窗口。

import sys
from PyQt5 import QtWidgets
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5.QtCore import pyqtSlot, pyqtSignal

class window(QtWidgets.QMainWindow):

def __init__(self):
super().__init__()
self.setGeometry(300, 300, 480, 300)
self.setWindowTitle('Hello World')
self.setWindowLayout()

def setWindowLayout(self):
self.w = QtWidgets.QWidget(self)
self.layout = QtWidgets.QHBoxLayout()
self.label = QtWidgets.QLabel('Hello World Label')
self.layout.addWidget(self.label)
self.w.setLayout(self.layout)


if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
main_window = window()
main_window.show()
main_window.close()
sys.exit(app.exec_())

一旦我使用关闭窗口main_window.close()。我希望我的程序退出。

如果此问题已在其他帖子中解决,我深表歉意。我搜索了答案,但没有解决我的问题。

谢谢。

最佳答案

在我看来,这是一个错误,因为根据文档,如果没有顶级窗口,应用程序应该关闭,但似乎没有验证窗口的关闭是否不是在事件之后 -循环开始。解决方法是使用 QTimer.singleShot(0, ...) 关闭窗口:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

class window(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(300, 300, 480, 300)
self.setWindowTitle('Hello World')
self.setWindowLayout()

def setWindowLayout(self):
self.w = QtWidgets.QWidget(self)
self.layout = QtWidgets.QHBoxLayout()
self.label = QtWidgets.QLabel('Hello World Label')
self.layout.addWidget(self.label)
self.w.setLayout(self.layout)

if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
main_window = window()
main_window.show()
QtCore.QTimer.singleShot(0, main_window.close) # <---
sys.exit(app.exec_())

关于python - 如何关闭pyqt5中的窗口并终止程序?程序卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55400635/

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