Een venster maken

Op deze pagina:

    Een venster maken met een knop die een tooltip geeft als je er met de muis over zweeft. Er is ook een sluitknop. Als je het venster probeert af te sluiten via het kruisje van het venster in plaats van via de knop in het venster, dan volgt er een melding met een vraag.

    
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    
    import sys
    from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QToolTip, QMessageBox
    from PyQt5.QtGui import QFont, QIcon
    from PyQt5.Qt import QCoreApplication
    
    # De QWidget widget is de basis class van alle user interface objecten in PyQt5.
    class Venster(QWidget):
    
        def __init__(self):
            super(Venster, self).__init__()
    
            self.initUI()
    
        def initUI(self):
    
            # Lettertype en grootte instellen
            QToolTip.setFont(QFont('SansSerif', 10))
    
            btn = QPushButton('Muis hier', self)
            # De tekst van de tooltip kan ook
            # Richtext bevatten,
            # zoals b voor vet (bold)
            btn.setToolTip('Dit is een bQPushButtonb widget')
            # SizeHint geeft een aanbevolen grootte voor
            # de knop
            btn.resize(btn.sizeHint())
            btn.move(30, 50)
    
            # Een sluitknop maken
            qbtn = QPushButton('Sluiten', self)
            qbtn.clicked.connect(QCoreApplication.instance().quit)
            qbtn.resize(qbtn.sizeHint())
            qbtn.move(150, 50)
    
            # x, y, breedte en hoogte instellen van
            # het venster
            # dit combineert move() en resize()
            self.setGeometry(300, 300, 250, 150)
            # De titel van het venster instellen.
            self.setWindowTitle('Mijn eerste venster')
            # Het icon van het venster instellen
            # in dit geval citrus.png in dezelfde map als
            # het pythonscript
            self.setWindowIcon(QIcon('citrus.png'))
    
            # Venster tonen.
            self.show()
    
        # Als een QWidget wordt gesloten via het
        # kruisje van het venster,
        # dan wordt er een QCloseEvent gegenereert.
        def closeEvent(self, event):
    
            reply = QMessageBox.question(self, 'Melding',
                "Wil je echt afsluiten?", QMessageBox.Yes |
                QMessageBox.No, QMessageBox.No)
    
            if reply == QMessageBox.Yes:
                event.accept()
            else:
                event.ignore()
    
    def main():
        # Een PyQt5 applicatie object maken.
        app = QApplication(sys.argv)
        window = Venster()
        sys.exit(app.exec_())
    
    if __name__ == '__main__':
        main()
    

    venster

    venster

     

    Verwante artikelen