QWidget 的动态伸缩布局可以通过使用 QBoxLayout 来实现。QBoxLayout 可以将子控件按照水平或垂直方向进行布局,并支持动态调整子控件的大小和位置。
下面是一个简单的例子,演示如何使用 QVBoxLayout 实现动态伸缩布局:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout() # 垂直布局
vbox.addStretch(1) # 添加一个可伸缩的空白项,使得按钮放置在底部
btn1 = QPushButton('Button 1', self)
btn2 = QPushButton('Button 2', self)
vbox.addWidget(btn1)
vbox.addWidget(btn2)
self.setLayout(vbox)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Dynamic Layout')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
该例子中,我们创建了一个 QVBoxLayout 对象,并添加了两个 QPushButton 控件。由于 QVBoxLayout 默认从顶部开始布局,因此我们在 QVBoxLayout 中添加了一个可伸缩的空白项,使得按钮放置在底部。这样,当我们改变窗口大小时,按钮的位置也会随之改变。
你可以尝试运行该例子,并拖动窗口大小,观察按钮的位置变化。