第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關(guān)閉 QWidget 窗口

關(guān)閉 QWidget 窗口

大話西游666 2021-09-25 21:48:54
我正在使用以下代碼在一段時間后自動關(guān)閉 Qwidget 窗口class ErrorWindow2(QtGui.QWidget):    def __init__( self ):        QtGui.QWidget.__init__( self, None, QtCore.Qt.WindowStaysOnTopHint)        msgBox = QMessageBox(self)        msgBox.move (500,500)        msgBox.setIcon(QMessageBox.Critical)        msgBox.setText("Test 2")        msgBox.setWindowTitle("ERROR")        msgBox.setStandardButtons(QMessageBox.Ok)        self.errWin2Timer = QtCore.QTimer()        self.errWin2Timer.timeout.connect(self.closeBox)        self.errWin2Timer.setSingleShot(True)        self.errWin2Timer.start(10000)        ret = msgBox.exec_()        if ret == QtGui.QMessageBox.Ok:            return        else:            return    def closeBox(self):        self.close()    def closeEvent(self, event):        logger.debug("Reached Error window 1 close event")        if self.errWin2:            self.errWin2.stop()            self.errWin2.deleteLater()        event.accept()但問題是這self.close行不通。一段時間后自動關(guān)閉窗口的最佳方法是什么?
查看完整描述

1 回答

?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個贊

問題是當(dāng)你ret = msgBox.exec_()在構(gòu)造函數(shù)執(zhí)行完之前put 時,窗口對象還沒有完成構(gòu)建,所以沒有什么可以關(guān)閉的,所以當(dāng)對話框關(guān)閉時,剛剛打開的窗口將顯示出來。我完成建造。我們的想法是完成窗口的構(gòu)建然后調(diào)用ret = msgBox.exec_(),為此我們將使用QTimer.singleShot().


另一方面,該closeEvent方法不是必需的,因?yàn)槲艺趪L試這樣做。恕我直言是self.errWin2Timer從內(nèi)存中消除(盡管似乎有一個錯字,因?yàn)槟闶褂胑rrWin2而不是errWin2Timer)但是作為窗口的兒子是沒有必要的,因?yàn)樵赒t中,如果父母死了,孩子們也會死。


from PyQt4 import QtCore,QtGui


class ErrorWindow2(QtGui.QWidget):

    def __init__( self ):

        super(ErrorWindow2, self).__init__(None, QtCore.Qt.WindowStaysOnTopHint)


        self.errWin2Timer = QtCore.QTimer(self, 

            interval=10*1000,

            singleShot=True, 

            timeout=self.close)

        self.errWin2Timer.start()

        QtCore.QTimer.singleShot(0, self.showMessageBox)


    def showMessageBox(self):

        msgBox = QtGui.QMessageBox(self)

        msgBox.move (500,500)

        msgBox.setIcon(QtGui.QMessageBox.Critical)

        msgBox.setText("Test 2")

        ret = msgBox.exec_()

        if ret == QtGui.QMessageBox.Ok:

            print("OK")


if __name__ == '__main__':

    import sys

    app = QtGui.QApplication(sys.argv)

    w = ErrorWindow2()

    w.show()

    sys.exit(app.exec_())


查看完整回答
反對 回復(fù) 2021-09-25
  • 1 回答
  • 0 關(guān)注
  • 604 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號