如何在PyQt5中实现用户可拖动调整大小的部件?
实现PyQt5部件的拖动调整大小功能
要实现鼠标拖动调整部件尺寸(比如左右部件互相缩放),你当前使用的QGridLayout无法直接提供这个交互,改用QSplitter控件是最直接的解决方案——它专门用于创建可拖动调整大小的分割布局。
以下是修改后的完整代码:
from PyQt5 import QtWidgets, QtCore import sys app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() window.resize(800, 500) # 创建水平方向的QSplitter,用于分割左右部件 splitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal) first_widget = QtWidgets.QGroupBox() first_widget.setStyleSheet("background-color:rgb(0,150,0)") second_widget = QtWidgets.QGroupBox() second_widget.setStyleSheet("background-color:rgb(150,0,0)") # 将部件添加到分割器中 splitter.addWidget(first_widget) splitter.addWidget(second_widget) # 设置初始拉伸比例(可选),这里让两个部件初始各占一半 splitter.setStretchFactor(0, 1) splitter.setStretchFactor(1, 1) # 将分割器作为窗口的主布局 layout = QtWidgets.QVBoxLayout(window) layout.addWidget(splitter) window.show() app.exec()
关键说明:
QSplitter(QtCore.Qt.Horizontal)指定分割方向为水平,若需要垂直分割可改用QtCore.Qt.VerticalsetStretchFactor方法用于设置部件的拉伸权重,权重相同则初始尺寸均等,拖动后也会按比例分配空间- 运行后,两个部件之间会出现一条可拖动的分割线,鼠标按住拖动即可调整左右部件的尺寸
内容的提问来源于stack exchange,提问作者Mohammed almalki
相关产品推荐
相关产品推荐

