要实现PyQt5控件随窗口变化,可以使用布局管理器来自动调整控件的大小和位置。
首先,需要选择合适的布局管理器,常用的有QHBoxLayout(水平布局)和QVBoxLayout(垂直布局)。接下来,在布局管理器中添加控件。
在窗口的resizeEvent事件中,可以重新调整控件的大小和位置,使其适应窗口的变化。可以通过控件的setGeometry方法来设置控件的大小和位置。
下面是一个示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QHBoxLayout, QWidget, QLabel
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建一个水平布局
layout = QHBoxLayout()
# 创建两个标签控件
label1 = QLabel('Label 1')
label2 = QLabel('Label 2')
# 将标签控件添加到布局中
layout.addWidget(label1)
layout.addWidget(label2)
# 创建一个中央部件,并设置为布局
widget = QWidget()
widget.setLayout(layout)
# 将中央部件设置为窗口的中央部件
self.setCentralWidget(widget)
def resizeEvent(self, event):
# 获取窗口的大小
size = event.size()
# 调整控件的大小和位置
self.centralWidget().setGeometry(0, 0, size.width(), size.height())
# 调用父类的resizeEvent方法
super().resizeEvent(event)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
在上面的代码中,我们创建了一个QHBoxLayout布局,并添加了两个QLabel控件。然后,将布局设置为窗口的中央部件。在窗口的resizeEvent事件中,我们根据窗口的大小调整了中央部件的大小和位置。
运行代码后,当调整窗口的大小时,两个标签控件会随着窗口的变化而变化。