pyqtwidgets / 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()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.