阅读量:3
要实现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事件中,我们根据窗口的大小调整了中央部件的大小和位置。
运行代码后,当调整窗口的大小时,两个标签控件会随着窗口的变化而变化。