You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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.Vertical
  • setStretchFactor 方法用于设置部件的拉伸权重,权重相同则初始尺寸均等,拖动后也会按比例分配空间
  • 运行后,两个部件之间会出现一条可拖动的分割线,鼠标按住拖动即可调整左右部件的尺寸

内容的提问来源于stack exchange,提问作者Mohammed almalki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:05:58