T. Issaris
22 Februari 2021
Download Qt for Python:
(https://www.qt.io/qt-for-python)[https://www.qt.io/qt-for-python]
Maak een virtuele omgeving:
Activeer je virtuele omgeving:
Installeer Qt for Python:
Eerst importeren we de module QtWidgets uit module PySide6:
Vervolgens maken we een app object aan van class QApplication:
QApplication is een blauwdruk voor een applicatie.
In de vorige slide werd een applicatie object aangemaakt, maar het programma werd beeindigd voordat er iets mee kon gebeuren…
Roep de functie exec_() op: Dit noemt men de eventloop. In de eventloop worden events van b.v. je Windows grafische omgeving verwerkt.
Als je de code uit de vorige slides zou uitvoeren, zou je nog geen programma-venster zien verschijnen.
Nu maken we een programma-venster aan door een instantie aan te maken van de QWidget class:
Als je de code uit de vorige slides zou uitvoeren, zou je nog steeds geen programma-venster zien verschijnen.
We dienen expliciet de show() method uit te voeren op de widgets die we willen tonen:
Je kan de titel die getoond wordt boven je programma-venster aanpassen met de method setWindowTitle op het object van class QWidget:
Verder kan je met method resize() de grootte van je venster aanpassen:
We willen nu een button toevoegen, Qt voorziet hiervoor de QPushButton class:
from PySide6 import QtWidgets
app = QtWidgets.QApplication()
wid = QtWidgets.QWidget()
wid.setWindowTitle('De titel')
wid.show()
button = QtWidgets.QPushButton("Klik op mij", wid) # Nieuw
app.exec_()We geven als argumenten, het label dat op de button dient te verschijnen en het venster waarin de button getoond dient te worden.
De button verscheen echter niet… We dienen ook voor deze widget de method show() op te roepen:
Schrijf een Python programma met Qt dat 2 buttons toont:
Heel erg veel nut heeft onze button momenteel nog niet.
We willen code kunnen uitvoeren als er op de button geklikt wordt. We definieren eerst een functie die uitgevoerd moet worden als er geklikt wordt op de button:
Vervolgens koppelen we onze functie aan de button door middel van de clicked.connect() method:
Samen geeft dit:
Schrijf een Python programma met Qt dat 2 buttons toont en waarbij je “Opgeslagen” afdrukt als je op “Save” klikt, en “Geannulleerd” als je op “Cancel” klikt:
from PySide6 import QtWidgets
def mijn_functie():
print("Er werd op mij geklikt!")
app = QtWidgets.QApplication()
wid = QtWidgets.QWidget()
wid.show()
button = QtWidgets.QPushButton("Klik op mij", wid)
button.show()
button.clicked.connect(mijn_functie)
edit = QtWidgets.QTextEdit("Je naam", wid) # Nieuw
edit.show() # Nieuw
app.exec_()Om dit probleem te voorkomen, kunnen we de positie van het invoerveld aanpassen via de setGeometry() method:
from PySide6 import QtWidgets
def mijn_functie():
print("Er werd op mij geklikt!")
app = QtWidgets.QApplication()
wid = QtWidgets.QWidget()
wid.show()
button = QtWidgets.QPushButton("Klik op mij", wid)
button.show()
button.clicked.connect(mijn_functie)
edit = QtWidgets.QTextEdit("Je naam", wid)
edit.setGeometry(10, 30, 100, 100) # Nieuw
edit.show()
app.exec_()from PySide6 import QtWidgets
def mijn_functie():
print(edit.toPlainText())
app = QtWidgets.QApplication()
wid = QtWidgets.QWidget()
wid.show()
button = QtWidgets.QPushButton("Klik op mij", wid)
button.show()
button.clicked.connect(mijn_functie)
edit = QtWidgets.QTextEdit("Je naam", wid)
edit.setGeometry(10, 30, 100, 100) # Nieuw
edit.show()
app.exec_()