【问题标题】:Timed qmessagebox?定时qmessagebox?
【发布时间】:2014-05-05 19:34:53
【问题描述】:

刚刚开始玩这个。目前对我来说不是必需的,但仍然很好奇。有什么方法可以创建定时 qmessagebox?

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

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

有人对如何实现这一目标有想法吗?

【问题讨论】:

    标签: python pyqt


    【解决方案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)
    

    【讨论】:

    • 太棒了,谢谢!明天要先测试一下。
    猜你喜欢
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 2017-01-30
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    相关资源
    最近更新 更多