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()