T. Issaris
1 Maart 2021
Met behulp van de setGeometry() method kunnen we expliciet de positie en grootte van widgets aanpassen.
Moeilijk voor verschillende scherm en venstergroottes…
Oplossing: Automatisch regelen van de posities en groottes van widgets.
https://doc.qt.io/qt-6/layout.html
We kunnen gebruik maken van de QVBoxLayout() widget om onze layout te vergemakkelijken:
De complete code wordt dan:
from PySide6 import QtWidgets
app = QtWidgets.QApplication()
wid = QtWidgets.QWidget()
wid.show()
layout = QtWidgets.QVBoxLayout(wid) # Nieuw
button = QtWidgets.QPushButton("Klik op mij")
layout.addWidget(button) # Nieuw
edit = QtWidgets.QTextEdit("Je naam")
layout.addWidget(edit) # Nieuw
app.exec_()
We kunnen meerdere widgets aan onze layout toevoegen:
layout = QtWidgets.QVBoxLayout(wid) # Nieuw
button1 = QtWidgets.QPushButton("Knop 1")
layout.addWidget(button1) # Nieuw
button2 = QtWidgets.QPushButton("Knop 2")
layout.addWidget(button2) # NieuwDeze worden onder elkaar weergegeven.
We kunnen ook verschillende soorten widgets aan onze layout toevoegen:
Een volledig voorbeeld:
from PySide6 import QtWidgets
app = QtWidgets.QApplication()
wid = QtWidgets.QWidget()
wid.show()
layout = QtWidgets.QVBoxLayout(wid) # Nieuw
button = QtWidgets.QPushButton("Klik op mij")
layout.addWidget(button) # Nieuw
edit = QtWidgets.QTextEdit("Je naam")
layout.addWidget(edit) # Nieuw
app.exec_()Pas je programma uit oefening 2 aan zodat gebruik gemaakt wordt van QVBoxLayout.
QHBoxLayout werkt net als QVBoxLayout maar plaatst de widgets langs elkaar.
from PySide6 import QtWidgets
app = QtWidgets.QApplication()
wid = QtWidgets.QWidget()
wid.show()
layout = QtWidgets.QHBoxLayout(wid) # Nieuw V -> H
button = QtWidgets.QPushButton("Klik op mij")
layout.addWidget(button) # Onaangepast!
edit = QtWidgets.QTextEdit("Je naam")
layout.addWidget(edit) # Onaangepast!
app.exec_()Pas je programma uit oefening 3 aan zodat gebruik gemaakt wordt van QHBoxLayout.
QGridLayout werkt net als QVBoxLayout maar je plaatst de widgets langs elkaar op een grid/raster/matrix.
Pas je programma uit oefening 4 aan zodat gebruik gemaakt wordt van QGridLayout.
QFormLayout werkt net als QVBoxLayout maar je nu heb je twee kolommen per rij:
Pas je programma uit oefening 5 aan zodat gebruik gemaakt wordt van QFormLayout.
Schrijf een Python programma met Qt dat 3 labels toont, en drie invulvelden. De drie labels geven aan dat je je naam, e-mailadres en telefoonnummer kan ingeven.
Gebruik hiervoor de QFormLayout.
Voeg twee buttons toe aan de code uit oefening 7: - een klop “Save” - een knop “Cancel”
Pas de code uit opgave 8 aan zodat als je op “Save” klikt, “opslaan” afgedrukt wordt, en als je op “Cancel” klikt “annulleren”.
Pas de code uit opgave 9 aan zodat als je op “Save” klikt, de velden opgeslagen worden in een bestand.