PyQt - QVBoxLayout



The QVBoxLayout 類用於構建垂直方向的佈局容器。容器中的內容會按照從上到下的順序依次排列。可以使用各種 PyQt 函式建立垂直容器序列,例如 setLayout()、QPushButton()、addWidget()、addStretch()、setStyleSheet() 等。因此,所有這些函式物件都建立了一個活動的佈局管理器。

qvboxlayout Ex Intro

QVBoxLayout 語法

構建垂直容器佈局使用以下語法:

QVBoxLayout()

QVBoxLayout 在 PyQt 視窗中的用法

  • **垂直排列** - QVBoxLayout 是一種佈局管理器,負責按垂直順序排列小部件。
  • **動態調整大小** - 由於主視窗大小會發生變化,因此它是動態調整大小的。
  • **輕鬆新增小部件** - 我們可以使用 addWidget() 方法新增小部件。
  • **間距管理** - 可以透過 addStretch() 方法維護 QVBoxLayout 的間距。當需要留出空間時,可以使用此方法。

示例 1

這裡,我們建立一個使用 addWidget() 方法的 QVBoxLayout,並將按鈕垂直顯示。

from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
layout.addWidget(QPushButton('1'))
layout.addWidget(QPushButton('2'))
layout.addWidget(QPushButton('3'))
window.setLayout(layout)
window.show()
app.exec()

輸出

執行程式碼後,我們將獲得以下輸出:

qvboxlayout Ex Basic

示例 2

下面的示例演示了使用 QVBoxLayout 填充顏色後的垂直按鈕。可以使用 QColor 類填充容器,該類提供內建函式 Color() 來設定顏色的名稱。

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from PyQt6.QtGui import QColor
class Color(QWidget):
   def __init__(self, color):
      super().__init__()
      self.setAutoFillBackground(True)
      # default palette for current style
      palette = self.palette()
      # Modify the color
      palette.setColor(self.backgroundRole(), QColor(color))
      self.setPalette(palette)

class MainWindow(QMainWindow):
   def __init__(self):
      super(MainWindow, self).__init__()
      # Setting window title
      self.setWindowTitle("My App")

      layout = QVBoxLayout()
      layout.addWidget(Color('orange'))
      layout.addWidget(Color('blue'))
      layout.addWidget(Color('green'))

      widget = QWidget()
      widget.setLayout(layout)
      self.setCentralWidget(widget)

if __name__ == "__main__":
   app = QApplication(sys.argv)
   window = MainWindow()
   window.show()
   sys.exit(app.exec())

輸出

執行程式碼後,我們將獲得三個不同顏色的容器小部件:

qvboxlayout Ex One

示例 3

我們添加了 addStretch() 方法,該方法將按鈕對齊到中心。這裡,我們從開頭到小部件(頂部)使用垂直間隔符,然後從小部件到結尾(底部)使用垂直間隔符。

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
class MainWindow(QWidget):
   def __init__(self, *args, **kwargs):
      super().__init__(*args, **kwargs)
      self.setWindowTitle('PyQt QVBoxLayout')
      # create a layout
      layout = QVBoxLayout()
      self.setLayout(layout)
      # add a spacer
      layout.addStretch()
      # create buttons and add them to the layout
      title = ['A', 'B', 'C', 'D', 'E']
      buttons = [QPushButton(t) for t in title]
      for button in buttons:
         layout.addWidget(button)
      # add a spacer
      layout.addStretch()
      # show the window
      self.show()

if __name__ == '__main__':
   app = QApplication(sys.argv)
   window = MainWindow()
   sys.exit(app.exec())

輸出

執行程式碼後,我們將獲得以下結果:

qvboxlayout Ex Two
廣告

© . All rights reserved.