[英]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.