定时的qmessagebox?
我刚开始玩这个,虽然现在不太重要,但还是挺好奇的。有没有办法创建一个定时的消息框?
简单来说,我有一个循环在运行,每次循环之间需要一些时间。我想在每次循环完成后给用户显示一个消息框,这样他们就可以选择是否取消后面的循环。我也不想让用户一直在那儿等着,所以如果过了6秒,消息框就会自动关闭,程序继续运行。
我觉得这可能有点棘手,因为消息框是模态的,会打断脚本的执行。
有没有人有什么想法,能帮我实现这个?
1 个回答
1
正如在这个回答中提到的,你可以通过创建一个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)