2014-05-05 84 views
0

剛開始玩這個。目前對我而言並不重要,但仍然好奇。有什麼方法來創建一個定時的qmessagebox?定時的qmessagebox?

基本上,我有一個正在發生的循環,並且在迭代之間需要一段時間。我想在每次迭代完成後向用戶顯示一個消息框,以便他們有機會取消未來的迭代,如果他們想要的話。我也不希望用戶必須在那裏繼續進行,所以如果說6秒鐘通過,它只會關閉消息框並繼續。

想到這可能有點棘手,因爲消息框是模態的,並且會中斷腳本的流程。

有沒有人有如何可能實現這個想法?

回答

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) 
+0

太棒了,謝謝!明天首先要測試這一點。 – Mathieson