QBoxLayout(框布局)
采用QBoxLayout類可以在水平和垂直方向上排列控件,QHBoxLayout和
QVBoxLayout類繼承自QBoxLayout類。
QHBoxLayout(水平布局)
采用QHBoxLayout類,按照從左到右的順序來添加控件。QHBoxLayout類中的
常用方法如表6-1所示。
方法 | 描述 |
---|---|
addLayout(self,QLayout,stretch=0) | 在窗口的右邊添加布局,使用stretc(伸縮量)進行伸, |
伸縮量默認為0 | |
addWidget(self,QWidget,stretch,Qt.Alignment alignment) | 在布局中添加控件:- stretch(伸縮量),只適用于QBoxLayout,控件和窗口會隨著伸縮量的變大而增大- alignment,指定對齊的方式 |
addSpacing(self,int) | 設置各控件的上下間距.通過該方法可以增加額外的空間 |
QHBoxLayout類的繼承結構如下: | |
在創建QHBoxLayout布局時用到的對齊方式參數如表6-2所示。 | |
參數 | 描述 |
— | — |
Qt.AlignLeft | 水平方向居左對齊 |
Qt.AlignRight | 水平方向居右對齊 |
Qt.AlignCenter | 水平方向居中對齊 |
Qt.ALignJustify | 水平萬向兩端對齊 |
Qt.AlignTop | 重直方向上對齊 |
Qt.AlignBottom | 垂直方向靠下對齊 |
Qt.AlignVCenter | 垂直方向居中對齊 |
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QHBoxLayout,QPushButtonclass Winform(QWidget):def __init__(self,parent=None):super(Winform,self).__init__(parent)self.setWindowTitle("水平布局管理例子")#水平布局按照從左到右的順序進行添加按鈕部件hlayout = QHBoxLayout()hlayout.addWidget(QPushButton(str(1)))hlayout.addWidget(QPushButton(str(2)))hlayout.addWidget(QPushButton(str(3)))hlayout.addWidget(QPushButton(str(4)))hlayout.addWidget(QPushButton(str(5)))self.setLayout(hlayout)if __name__ == '__main__':app = QApplication(sys.argv)form = Winform()form.show()sys.exit(app.exec_())
運行結果
QVBoxLayout(垂直布局)
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QPushButtonclass Winform(QWidget):def __init__(self,parent=None):super(Winform,self).__init__(parent)self.setWindowTitle("垂直布局管理例子")self.resize(330,150)#垂直布局按照從上到下的順序進行添加按鈕部件vlayout = QVBoxLayout()vlayout.addWidget(QPushButton(str(1)))vlayout.addWidget(QPushButton(str(2)))vlayout.addWidget(QPushButton(str(3)))vlayout.addWidget(QPushButton(str(4)))vlayout.addWidget(QPushButton(str(5)))self.setLayout(vlayout)if __name__ == '__main__':app = QApplication(sys.argv)form=Winform()form.show()sys.exit(app.exec_())
運行結果
addStretch()函數的使用
在布局時要用到addStretch()函數。設置stretch伸縮量后,按比例分配剩余空間。
addStretch()函數的具體使用請參考表6-3。
函數 | 描述 |
---|---|
QBoxLayout.addStretch(int stretch=0) | addStretch()函數在布局管理器中增能一個可伸縮的控件(QSpaceItem),0 |
為最小值,并且將stretch作為伸縮量添加到布局末尾 | |
streteh參數表示均分的比例,默認值為0 |
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton
import sysclass WindowDemo(QWidget):def __init__(self):super().__init__()btn1 = QPushButton(self)btn2 = QPushButton(self)btn3 = QPushButton(self)btn1.setText('button 1')btn2.setText('button 2')btn3.setText('button 3')hbox = QHBoxLayout()# 設置伸縮量為1hbox.addStretch(1)hbox.addWidget(btn1)# 設置伸縮量為1hbox.addStretch(1)hbox.addWidget(btn2)# 設置伸縮量為1hbox.addStretch(1)hbox.addWidget(btn3)# 設置伸縮量為1hbox.addStretch(1)self.setLayout(hbox)self.setWindowTitle("addStretch 例子")if __name__ == "__main__":app = QApplication(sys.argv)win = WindowDemo()win.show()sys.exit(app.exec_())
運行結果