簡體   English   中英

執行關閉窗口命令后,Pyqt終端掛起

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM