from PyQt4 import QtCore, QtGui from Queue import Queue from time import time class BMStatusBar(QtGui.QStatusBar): duration = 10000 deleteAfter = 60 def __init__(self, parent=None): super(BMStatusBar, self).__init__(parent) self.important = [] self.timer = self.startTimer(BMStatusBar.duration) self.iterator = 0 def timerEvent(self, event): while len(self.important) > 0: self.iterator += 1 try: if time() > self.important[self.iterator][1] + BMStatusBar.deleteAfter: del self.important[self.iterator] self.iterator -= 1 continue except IndexError: self.iterator = -1 continue super(BMStatusBar, self).showMessage(self.important[self.iterator][0], 0) break def addImportant(self, message): self.important.append([message, time()]) self.iterator = len(self.important) - 2 self.timerEvent(None) def showMessage(self, message, timeout=0): super(BMStatusBar, self).showMessage(message, timeout) def clearMessage(self): super(BMStatusBar, self).clearMessage()