PyQt5 - Zarządzanie układami
Widżet GUI można umieścić w oknie kontenera, określając jego współrzędne bezwzględne mierzone w pikselach. Współrzędne odnoszą się do wymiarów okna zdefiniowanych metodą setGeometry ().
składnia setGeometry ()
QWidget.setGeometry(xpos, ypos, width, height)
W poniższym fragmencie kodu okno najwyższego poziomu o wymiarach 300 na 200 pikseli jest wyświetlane w pozycji (10, 10) na monitorze.
import sys
from PyQt4 import QtGui
def window():
app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
b = QtGui.QPushButton(w)
b.setText("Hello World!")
b.move(50,20)
w.setGeometry(10,10,300,200)
w.setWindowTitle(“PyQt”)
w.show()
sys.exit(app.exec_())
if __name__ == '__main__':
window()
ZA PushButton widget zostanie dodany w oknie i umieszczony 50 pikseli w prawo i 20 pikseli poniżej lewej górnej pozycji okna.
To absolutne pozycjonowanie nie jest jednak odpowiednie z następujących powodów:
Pozycja widżetu nie zmienia się nawet po zmianie rozmiaru okna.
Wygląd może nie być jednolity na różnych urządzeniach wyświetlających o różnych rozdzielczościach.
Modyfikacja układu jest trudna, ponieważ może wymagać przeprojektowania całego formularza.
PyQt API zapewnia klasy układu dla bardziej eleganckiego zarządzania pozycjonowaniem widżetów wewnątrz kontenera. Zalety menedżerów układów w porównaniu z pozycjonowaniem bezwzględnym to -
Widżety w oknie są automatycznie zmieniane.
Zapewnia jednolity wygląd na urządzeniach wyświetlających o różnych rozdzielczościach.
Dynamiczne dodawanie lub usuwanie widgetów jest możliwe bez konieczności przeprojektowywania.
Zestaw narzędzi Qt definiuje różne układy, których można używać z narzędziem Qt Designer.
Oto lista klas, które omówimy po kolei w tym rozdziale.
Sr.No. | Klasy i opis |
---|---|
1 | QBoxLayout Klasa QBoxLayout wyrównuje widżety w pionie lub w poziomie. Jego klasy pochodne to QVBoxLayout (do układania widgetów w pionie) i QHBoxLayout (do układania widgetów w poziomie). |
2 | QGridLayout Obiekt klasy GridLayout przedstawia siatkę komórek ułożonych w wierszach i kolumnach. Klasa zawiera metodę addWidget (). Dowolny widget można dodać, określając liczbę wierszy i kolumn komórki. |
3 | QFormLayout QFormLayout to wygodny sposób tworzenia formularza z dwiema kolumnami, w którym każdy wiersz składa się z pola wejściowego skojarzonego z etykietą. Zgodnie z konwencją, lewa kolumna zawiera etykietę, a prawa kolumna zawiera pole wejściowe. |