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.