PyQt| Phân chia bố cục cho giao diện

 Khái nim b cc: 

B cc s sp xếp các thành phn trên trang giao din sao cho hp vi mc đích to ra mt sn phm d nhìn hp dn v mt thm m. 


04 kiu b cc: 

  1. QHBoxLayout - B cc ngang tuyến tính: 

 

 

  • B trí widget nm ngang theo khung giao din. Các widget s đưc sp xếp theo th t thêm vào. 

  • Mt s ng dng ph biến ca b cc này thưng : 

  • Các thành phn dng thanh như thanh công c, thanh tìm kiếm, thanh điu ng 

  1. QVBoxLayout - B cc dc tuyến tính:  

 

  • B cc sp xếp các thành phn theo chiu dc, t trên xung i. Các widget s đưc sp xếp theo th t thêm vào. 

  • Mt s ng dng ph biến ca b cc này thưng : 

  • Các thành phn dng danh sách như danh sách sn phm, danh sách bài viết, danh sách nhim v, v.v. 

  • Các thành phn dng form như form đăng , form đăng nhp, form đt hàng, v.v. 

 

  1. QGridLayout - B cc dng i: 

 

 

  • B cc sp xếp các thành phn thành các ô ca mt i theo hàng ct. Widget th đưc đt bt k ô nào ca i, th đưc lp li trong nhiu ô. 

  • Mt s ng dng ph biến ca b cc này thưng : 

  • Các thành phn dng bng như bng d liu, bng tính, v.v. 

  • Các thành phn dng i như i ô vuông, i i ô ch, v.v. 

 

  1. QStackedLayout - B cc dng chng lên nhau: 

 

 

  • B cc sp xếp các widget theo th t chng lên nhau theo trang. Ch mt trang đưc hin th  

  • Mt s ng dng ph biến ca b cc này thưng : 

  • Các thành phn dng tab như tab ng dng, tab ca s, tab trang web, v.v. 

  • Các thành phn dng menu như menu ng dng, menu trang web, menu trò chơi, v.v. 

Container widget đưc s dng đ cha các widget. Chúng giúp sp xếp t chc các widget trong giao din ngưi dùng tt hơn. 

 

Các thành phn Container trong Qt Designer bao gm: 

QGroupBox : Mt hp thoi cha các widget liên quan đến nhau. 

QScrollArea : Mt vùng cun ( th lăn chut đưc) cha các widget. 

QStackedWidget : Mt ca s cha các widget th chng lên nhau. 

QTabWidget : Mt ca s cha các widget đưc chia thành các tab. 

Áp dng b cc vào Container: 

Các container trong QtDesigner đã áp dng b cc cho các thành phn khi đưc đt bên trong . Tuy nhiên mt s thành phn container chưa áp dng b cc như: 

- QWidget  

- QFrame:  


Các c áp dng b cc cho container bng kéo th 

  1. Kéo các thành phn giao din vào container 

  1. Nhn chut phi vào container. 

  1. Chn Layout -> Chn các b cc mun áp dng cho container. 

 

 

Ngoài ra, th kéo th Layout trong QtDesigner đ các container đã áp dng sn b cc 

Các c áp dng b cc cho container bng lp trình 

 

import sys 

from PyQt6.QtWidgets import ( 

    QApplication, QCheckBox, QComboBox, 

    QDateEdit, QFontComboBox, QLineEdit, 

    QMainWindow, QPushButton, QRadioButton, 

    QSlider, QSpinBox, QVBoxLayout, QWidget, 

) 

 

 

class MainWindow(QMainWindow): 

    def __init__(self): 

        super().__init__() 

 

        self.setWindowTitle("Widgets App") 

        self.layout = QVBoxLayout() 

        self.widgets = [QCheckBox, 

                        QComboBox, 

                        QDateEdit, 

                        QFontComboBox, 

                        QLineEdit, 

                        QPushButton, 

                        QRadioButton, 

                        QSlider, 

                        QSpinBox] 

 

        for w in self.widgets: 

            self.layout.addWidget(w()) 

 

        self.central_widget = QWidget() 

        self.central_widget.setLayout(self.layout) 

        self.setCentralWidget(self.central_widget) 

 

 

if __name__ == "__main__":   

    app = QApplication(sys.argv) 

    window = MainWindow() 

    window.show() 

 

    sys.exit(app.exec()) 

 

Trong đó, 

  • QVBoxLayout() to layout dng xếp dc. 

  • layout.addWidget() phương thc thêm widget vào layout đã to. 

  • central_widget.setLayout() phương thc gán layout cho container đã to. 

Gi ý s dng sample Pet Adoption:  

 

Phân tích b cc trang ch 

Trang ch th áp dng b cc theo chiu ngang như sau: 

 

Phn 1: Container đ cha các thành phn trong thanh điu ng. 

Phn 2: Container đ cha các ni dung chính ca ca s. phn 2 bao gm nhiu thành phn giao din nên cn áp dng b cc theo chiu dc. 

 

Tương t phân tích chi tiết cho tng phn còn li ca ca s cách trang còn li. 

Giao din mu đ phân tích: 

 

 


Đăng nhận xét

Mới hơn Cũ hơn