Commits

Henning Schröder committed dd68752

added fading widget

  • Participants
  • Parent commits 863b5e8

Comments (0)

Files changed (1)

qtwidgets/fader.py

+from PyQt4.QtCore import Qt, SIGNAL, QTimer
+from PyQt4.QtGui import QWidget, QColor, QPainter
+
+
+class Fader(QWidget):
+    # From http://doc.trolltech.com/qq/qq16-fader.html
+
+    def __init__(self, parent=None):
+        QWidget.__init__(self, parent)
+        if parent:
+            self.startColor = parent.palette().window().color()
+        else:
+            self.startColor = QColor("white")
+        self.currentAlpha = 0
+        self.duration = 333
+
+        self.timer = QTimer(self)
+        self.connect(self.timer, SIGNAL("timeout()"), self.update)
+
+        self.setAttribute(Qt.WA_DeleteOnClose)
+        self.resize(parent.size())
+
+
+    def start(self):
+        self.currentAlpha = 255
+        self.timer.start(33)
+        self.show()
+
+
+    def paintEvent(self, event):
+        painter = QPainter(self)
+        
+        semiTransparentColor = self.startColor
+        semiTransparentColor.setAlpha(self.currentAlpha)
+        painter.fillRect(self.rect(), semiTransparentColor)
+
+        self.currentAlpha -= 255 * self.timer.interval() / self.duration
+        if self.currentAlpha <= 0:
+            self.timer.stop()
+            self.close()