1. 程式人生 > 程式設計 >python GUI庫圖形介面開發之PyQt5佈局控制元件QVBoxLayout詳細使用方法與例項

python GUI庫圖形介面開發之PyQt5佈局控制元件QVBoxLayout詳細使用方法與例項

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_())

執行效果示意圖

python GUI庫圖形介面開發之PyQt5佈局控制元件QVBoxLayout詳細使用方法與例項

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_())

執行程式,初始效果圖如下

python GUI庫圖形介面開發之PyQt5佈局控制元件QVBoxLayout詳細使用方法與例項

拉伸後效果圖如下

python GUI庫圖形介面開發之PyQt5佈局控制元件QVBoxLayout詳細使用方法與例項

從上面的程式碼可以看出,四個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_())

執行效果圖

python GUI庫圖形介面開發之PyQt5佈局控制元件QVBoxLayout詳細使用方法與例項

結果顯示,這樣所有的控制元件都會向右顯示,

那麼類似的放在最後一個控制元件之後,都會向左顯示,

本文主要介紹了PyQt5佈局控制元件QVBoxLayout詳細使用方法與例項,更多關於PyQt5佈局控制元件的使用知識請檢視下面的相關連結