[英]Pyqt Terminal hangs after excuting close window command
我已经在线阅读了很多线程,但是仍然找不到解决方案。 我的问题应该非常简单:如何在不单击按钮或不使用计时器的情况下关闭Pyqt窗口。 我尝试过的代码粘贴在下面
from PyQt4 import QtGui, QtCore
import numpy as np
import progressMeter_simple
import sys
import time
import pdb
class ProgressMeter(progressMeter_simple.Ui_Dialog, QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
progressMeter_simple.Ui_Dialog.__init__(self)
self.setupUi(self)
self.progressBar.setRange(0, 0)
QtGui.QApplication.processEvents()
def termination(self):
time.sleep(5)
self.close()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
Dialog = ProgressMeter()
Dialog.show()
Dialog.termination()
sys.exit(app.exec_())
我的Pyqt GUI是使用Qt设计器设计的,它不过是一个不断从左向右移动(忙碌指示)的进度条。
但是,当我运行上面的代码时,关闭Pyqt窗口后,终端仍然挂起。 Ctrl + C也无法终止该进程。 简而言之,如何在不单击按钮或使用计时器的情况下正确关闭/终止Pyqt窗口?
它不起作用,因为您是在事件循环外部的对话框( close()
)上调用GUI方法。 直到您调用app.exec_()
,事件循环才开始。
如果确实要在对话框打开后立即关闭而不使用QTimer
,则可以覆盖showEvent()
方法并从那里调用termination()
,该方法在首次显示对话框时被调用。
class ProgressMeter(progressMeter_simple.Ui_Dialog, QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
progressMeter_simple.Ui_Dialog.__init__(self)
self.setupUi(self)
self.progressBar.setRange(0, 0)
def showEvent(self, event):
super(ProgressMeter, self).showEvent(event)
self.termination()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.