Knoppen klikken kleuren mengen

Op deze pagina:

    Als je op een knop klikt in het onderstaande voorbeeld, dan wordt er een kleur aangezet. Als je nogmaals op die knop klikt, dan wordt die kleur weer uitgezet. Als je op meerdere knoppen klikt zonder ze eerst weer uit te zetten, dan worden de kleuren gemengd.

    
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    
    import sys
    
    from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFrame
    from PyQt5.QtGui import QColor
    
    class Venster(QWidget):
    
        def __init__(self):
            super(Venster, self).__init__()
    
            self.initUI()
    
        def initUI(self):
    
            self.col = QColor(0, 0, 0)
    
            redb = QPushButton('Rood', self)
            redb.setCheckable(True)
            redb.move(10, 10)
    
            redb.clicked[bool].connect(self.setColor)
    
            greenb = QPushButton('Groen', self)
            greenb.setCheckable(True)
            greenb.move(10, 60)
    
            greenb.clicked[bool].connect(self.setColor)
    
            blueb = QPushButton('Blauw', self)
            blueb.setCheckable(True)
            blueb.move(10, 110)
    
            blueb.clicked[bool].connect(self.setColor)
    
            self.square = QFrame(self)
            self.square.setGeometry(150, 20, 100, 100)
            self.square.setStyleSheet("QWidget { background-color: %s }" %
                self.col.name())
    
            self.setGeometry(300, 300, 280, 170)
            self.setWindowTitle('Kleurenmenger')
            self.show()
    
        def setColor(self, pressed):
    
            source = self.sender()
    
            if pressed:
                val = 255
            else: val = 0
    
            if source.text() == "&Rood": #vergeet de & niet
                self.col.setRed(val)
            elif source.text() == "&Groen": #vergeet de & niet
                self.col.setGreen(val)
            else:
                self.col.setBlue(val)
    
            self.square.setStyleSheet("QFrame { background-color: %s }" %
                self.col.name())
    
    def main():
    
        app = QApplication(sys.argv)
        window = Venster()
        sys.exit(app.exec_())
    
    if __name__ == '__main__':
        main()
    

    kleuren mengen

     

    Verwante artikelen