PyQt5ウィジェットのサイズをウィンドウサイズに合わせて動的に変更の方法
要实现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のレイアウトに2つのQLabelを配置しました。レイアウトをウィンドウの中央ウィジェットとしてセットしました。ウィンドウの再サイズ処理イベントで、中央ウィジェットのサイズと位置をウィンドウのサイズに応じて設定しました。
コードを実行すると、ウィンドウのサイズを変更した際に、2つのラベルはウィンドウの変更に応じて移動します。