python GUI庫圖形介面開發之PyQt5佈局控制元件QVBoxLayout詳細使用方法與例項
阿新 • • 發佈:2020-03-07
PyQt5佈局控制元件QVBoxLayout簡介
採用QVBoxLayout類,按照從上到下的順序新增控制元件
本節內容較少,演示兩個例項,便於明白QVBoxLayout(垂直佈局)的使用
QVBoxLayout的正常使用例項
import sys from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QPushButton class 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伸縮量後,按比例分配剩餘的空間
函式 | 描述 |
---|---|
QBoxLayout.addStretch(int stretch=0) | addStretch()函式在佈局管理器中新增一個可伸縮的控制元件(QSpaceItem),0為最小值,並且將stretch作為伸縮量新增到佈局末尾,stretch引數表示均分的比例,預設為0 |
addStretch在QVBoxLayout的使用例項
一個佈局管理器中,有三個按鈕,要求介面不隨著父控制元件的伸縮而改變
from PyQt5.QtWidgets import QApplication,QHBoxLayout,QPushButton import sys class 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() # 設定伸縮量為1 hbox.addStretch(1) hbox.addWidget( btn1 ) # 設定伸縮量為1 hbox.addStretch(1) hbox.addWidget( btn2 ) # 設定伸縮量為1 hbox.addStretch(1) hbox.addWidget( btn3 ) # 設定伸縮量為1 hbox.addStretch(1 ) self.setLayout(hbox) self.setWindowTitle("addStretch 例子") if __name__ == "__main__": app = QApplication(sys.argv) win = WindowDemo() win.show() sys.exit(app.exec_())
執行程式,初始效果圖如下
拉伸後效果圖如下
從上面的程式碼可以看出,四個addStretch()函式用於在按鈕間隨著伸縮量,伸縮量的比例為1:1:1:1,意思是將按鈕以外的空白地方等分為4分,並按照所設定的順序放入按鈕的佈局管理器中,這樣在每一個控制元件之間都添加了伸縮量,所有控制元件之間的間距都會相同
思考:如果我們只新增一個addStretch()在第一個控制元件之前或者最後一個控制元件之後會怎樣呢,那麼來試試看
探究:addStretch()函式放在第一個空間之前
import sys from PyQt5.QtWidgets import QApplication,self).__init__(parent) self.setWindowTitle("水平佈局管理例子") self.resize(800,50) # 水平佈局按照從左到右的順序進行新增按鈕部件。 hlayout = QHBoxLayout() # 新增伸縮 hlayout.addStretch(0) 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)) ) # 新增伸縮 #hlayout.addStretch(1) self.setLayout(hlayout) if __name__ == "__main__": app = QApplication(sys.argv) form = Winform() form.show() sys.exit(app.exec_())
執行效果圖
結果顯示,這樣所有的控制元件都會向右顯示,
那麼類似的放在最後一個控制元件之後,都會向左顯示,
本文主要介紹了PyQt5佈局控制元件QVBoxLayout詳細使用方法與例項,更多關於PyQt5佈局控制元件的使用知識請檢視下面的相關連結