刚开始玩这个。目前对我来说不是必不可少的,但仍然很好奇。有没有办法创建一个定时的qmessagebox?
基本上,我有一个正在发生的循环,并且在迭代之间需要一段时间。我想在每次迭代完成后向用户显示一个消息框,以便他们有机会取消未来的迭代,如果他们想要的话。我也不希望用户必须在那里继续进行,所以如果说6秒后它就会关闭消息框并继续。
认为这可能有点棘手,因为消息框是模态的并且会中断脚本的流程。
那里有人想知道如何实现这个目标吗?
答案 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)