要實現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事件中,我們根據窗口的大小調整了中央部件的大小和位置。
運行代碼后,當調整窗口的大小時,兩個標簽控件會隨著窗口的變化而變化。