定时qmessagebox?

时间:2014-05-05 19:34:53

标签: python pyqt

刚开始玩这个。目前对我来说不是必不可少的,但仍然很好奇。有没有办法创建一个定时的qmessagebox?

基本上,我有一个正在发生的循环,并且在迭代之间需要一段时间。我想在每次迭代完成后向用户显示一个消息框,以便他们有机会取消未来的迭代,如果他们想要的话。我也不希望用户必须在那里继续进行,所以如果说6秒后它就会关闭消息框并继续。

认为这可能有点棘手,因为消息框是模态的并且会中断脚本的流程。

那里有人想知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

正如this回答中所建议的那样,你可以将QMessageBox子类化,以便在显示时启动计时器。完成后,它会自行调整。

class timedMessageBox(QtGui.QMessageBox):
    def __init__(self, timeout, message):
        super(timedMessageBox, self).__init__()
        self.timeout = timeout
        timeoutMessage = "Closing in {} seconds".format(timeout)
        self.setText('\n'.join((message, timeoutMessage)))

    def showEvent(self, event):
        QtCore.QTimer().singleShot(self.timeout*1000, self.close)
        super(timedMessageBox, self).showEvent(event)