Python 当windows';X';单击(关闭)按钮

Python 当windows';X';单击(关闭)按钮,python,pyqt,pyqt5,python-3.7,Python,Pyqt,Pyqt5,Python 3.7,我有一个程序,当点击开始按钮时,它开始循环打印到终端。这很好。但当我关闭窗口时,循环将继续打印到终端。这是我不想要的。所以我想知道他们是否有办法访问windows“X”(最好使用PyQt5)来运行关闭整个程序的函数 我不知道你是否需要所有的代码,所以。。。我刚刚添加了我正在使用的循环函数 我一直在寻找解决办法。然而,我找到的解决方案都是针对PyQt4的,对我来说并不奏效 #我已尝试使用此选项关闭程序 app.aboutToQuit.connect(self.close)#不工作。。。什么也没做。

我有一个程序,当点击开始按钮时,它开始循环打印到终端。这很好。但当我关闭窗口时,循环将继续打印到终端。这是我不想要的。所以我想知道他们是否有办法访问windows“X”(最好使用PyQt5)来运行关闭整个程序的函数

我不知道你是否需要所有的代码,所以。。。我刚刚添加了我正在使用的循环函数

我一直在寻找解决办法。然而,我找到的解决方案都是针对PyQt4的,对我来说并不奏效

#我已尝试使用此选项关闭程序
app.aboutToQuit.connect(self.close)#不工作。。。什么也没做。
#闭合函数
def关闭(自我):
退出()
#我使用这个无限循环(用于测试目的)
def启动(自启动、激活):
自我激活
打印(自激活)
自停止设置启用(真)
self.Start\u BTN.setEnabled(False)
如果(自激活!=1):
通过
返回
其他:
而(self.activate==1):
打印('IDK只是需要一些东西放在这里。')
QTest.QTest.qWait(1000)
当您说单击按钮时,它开始以循环方式打印到终端。这很好,您似乎不知道Qt是如何工作的。在主线程中连续执行任务是不好的,因为它们会阻塞GUI的eventloop,从而导致窗口冻结。最接近的是,这种印象是每一个特定的时间间隔,并且该时间间隔很小(例如1毫秒),带有QTimer

从PyQt5导入QtCore、QtWidgets
类小部件(qtwidts.QWidget):
def uuu init uuu(self,parent=None):
超级(小部件,自我)。\uuuuu初始化\uuuuuuu(父级)
self.m_timer=QtCore.QTimer(self,间隔=1000)
self.m_start_button=qtwidts.QPushButton(“开始打印”)
self.m_close_button=qtwidts.QPushButton(“关闭窗口”)
self.m_close_按钮.setDisabled(真)
self.m_timer.timeout.connect(self.printing_任务)
self.m_start_按钮。单击。连接(self.start_计时器)
self.m_关闭按钮。单击。连接(self.close)
lay=qtwidts.QVBoxLayout(self)
lay.addWidget(self.m_start_按钮)
lay.addWidget(self.m_close_按钮)
@QtCore.pyqtSlot()
def启动定时器(自):
self.m_start_按钮.setDisabled(真)
self.m_close_按钮.setDisabled(假)
self.m_timer.start()
@QtCore.pyqtSlot()
def打印任务(自我):
打印(“IDK只是需要一些东西放在这里。”)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=Widget()
w、 show()
sys.exit(app.exec_())