PyQt QBoxLayout 类使用教程


发布日期 : 2022-11-04 21:49:32 UTC

访问量: 9 次浏览

PyQt QBoxLayout类

QBoxLayout 类垂直或水平地排列部件。
它的派生类是 QVBoxLayout(用于垂直排列部件)和 QHBoxLayout (用于水平排列部件)。
下表显示了QBoxLayout类的重要方法。

序号方法和描述
1addWidget() 在BoxLayout中添加一个部件。
2addStretch() 创建可拉伸的空盒子
3addLayout() 添加另一个嵌套布局

例子1

这里有两个按钮被添加到垂直的盒子布局中。
通过addStretch()方法在它们之间添加了一个可拉伸的空空间。
因此,如果顶层窗口被调整大小,按钮的位置会自动重新定位。

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

def window():
   app = QApplication(sys.argv)
   win = QWidget()

   b1 = QPushButton("Button1")
   b2 = QPushButton("Button2")

   vbox = QVBoxLayout()
   vbox.addWidget(b1)
   vbox.addStretch()
   vbox.addWidget(b2)
   win.setLayout(vbox)

   win.setWindowTitle("PyQt")
   win.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

上述代码产生了以下输出 —

PyQt - QBoxLayout类

例2

这个例子使用了水平方框布局。addStretch()方法在两个按钮对象之间插入了一个可拉伸的空位。
因此,随着窗口大小的调整,按钮的大小和位置都会动态变化。

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

def window():
   app = QApplication(sys.argv)
   win = QWidget()

   b1 = QPushButton("Button1")
   b2 = QPushButton("Button2")

   hbox = QHBoxLayout()

   hbox.addWidget(b1)
   hbox.addStretch()
   hbox.addWidget(b2)
   win.setLayout(hbox)
   win.setWindowTitle("PyQt")
   win.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

上述代码产生了以下输出 —

PyQt - QBoxLayout类

例3

这个例子显示了布局是如何被嵌套的。在这里,两个按钮被添加到垂直盒子布局中。
然后,一个带有两个按钮和一个可伸展的空位的水平盒子布局对象被添加到它上面。
最后,通过setLayout()方法将垂直盒式布局对象应用到顶层窗口中。

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

def window():
   app = QApplication(sys.argv)
   win = QWidget()

   b1 = QPushButton("Button1")
   b2 = QPushButton("Button2")

   vbox = QVBoxLayout()
   vbox.addWidget(b1)
   vbox.addStretch()
   vbox.addWidget(b2)
   hbox = QHBoxLayout()

   b3 = QPushButton("Button3")
   b4 = QPushButton("Button4")
   hbox.addWidget(b3)
   hbox.addStretch()
   hbox.addWidget(b4)

   vbox.addStretch()
   vbox.addLayout(hbox)
   win.setLayout(vbox)

   win.setWindowTitle("PyQt")
   win.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

上述代码产生了以下输出 —

PyQt - QBoxLayout类