1

次のコードはQTimerwith を作成するだけQLCDNumberです。プログラム起動から4秒経過したときにメッセージダイアログを表示したい。ただし、メッセージ ダイアログがポップアップしても、時間QLCDNumberは変わりません。メッセージ ダイアログが表示されても、このプログラムのタイミングを維持するにはどうすればよいですか?

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(800,600)

        self.lcdNumber = QLCDNumber()
        self.lcdNumber.setNumDigits(8)

        layout =  QVBoxLayout(self)
        layout.addWidget(self.lcdNumber)

        self.currentTime = QTime(0,0,0)
        self.lcdNumber.display(self.currentTime.toString('hh:mm:ss'))

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.updateLcdNumberContent)
        self.timer.start(1000)

    def updateLcdNumberContent(self):

        self.currentTime = self.currentTime.addSecs(1)
        self.lcdNumber.display(self.currentTime.toString('hh:mm:ss'))


        if self.currentTime == QTime(0,0,4) :
            msgBox = QMessageBox()
            msgBox.setWindowTitle('iTimer')
            msgBox.setIcon (QMessageBox.Information)
            msgBox.setText("Time Out !!")

            stopButton = msgBox.addButton("Stop", QMessageBox.ActionRole)
            ignoreButton = msgBox.addButton(QMessageBox.Ignore)

            stopButton.clicked.connect(self.timer.stop)


            msgBox.show()
#            msgBox.exec_()



if __name__ == '__main__':
    app =QApplication(sys.argv)
    frame = MainWindow()
    frame.show()
    sys.exit(app.exec_())
4

1 に答える 1

0

コードを次のように変更します

msgBox = QMessageBox(self)

ノンブロッキングメッセージボックスを作成します。exec_()メソッドを削除できます。

于 2013-03-15T06:53:08.593 に答える