可以使用QEventLoop和QCloseEvent来实现此功能。首先,在主窗口类中定义一个私有变量m_loop来存储QEventLoop对象,然后在主窗口类中重写closeEvent
函数
,以捕获窗口关闭事件,同时调用QEventLoop的quit
函数
来停止事件循环。最后,在需要停止/暂停执行的地方使用m_loop.exec()来开始事件循环,并在关闭窗口事件触发后停止事件循环。以下是示例代码:
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtCore import QEventLoop
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.m_loop = QEventLoop()
def closeEvent(self, event):
self.m_loop.quit()
event.accept()
if __name__ == "__main__":
app = QApplication([])
mainWindow = MainWindow()
mainWindow.show()
mainWindow.m_loop.exec_()
app.quit()