Qt Designer布局需求:固定宽度左侧面板+可缩放右侧Matplotlib绘图
Qt Designer 固定左侧面板宽度+右侧Matplotlib绘图自适应布局方案
一、Qt Designer 可视化布局设置
- 给主窗口添加QHBoxLayout作为顶层布局(右键主窗口 -> 布局 -> 水平布局)。
- 拖入两个
QWidget:一个作为左侧固定面板容器,另一个作为右侧绘图容器,都放到顶层水平布局里。 - 选中左侧
QWidget,在右侧属性面板设置minimumWidth和maximumWidth为同一数值(比如200),强制固定宽度;同时把它的拉伸因子设为0(选中布局里的左侧控件,右键 -> 布局 -> 设置拉伸因子 -> 0)。 - 给左侧
QWidget内部添加QVBoxLayout,然后把行编辑器、按钮等控件放入这个垂直布局,内部控件正常排列即可,无需单独设置尺寸。 - 选中右侧
QWidget,把它的拉伸因子设为1,这样主窗口调整尺寸时,所有额外空间都会分配给右侧区域。
二、Matplotlib 画布代码适配
- 在Qt Designer里给右侧
QWidget添加QVBoxLayout,命名为plot_layout(方便代码调用)。 - 代码中创建
FigureCanvasQTAgg实例后,添加到右侧布局,并设置画布的尺寸策略为自适应:
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg from matplotlib.figure import Figure from PyQt5.QtWidgets import QSizePolicy # 创建Matplotlib画布 fig = Figure() self.canvas = FigureCanvasQTAgg(fig) # 设置画布自适应容器 self.canvas.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # 添加到右侧布局 self.plot_layout.addWidget(self.canvas)
关键注意事项
- 不要给左侧面板的内部布局设置拉伸因子,避免覆盖外层的固定宽度设置。
- 如果用
QGroupBox作为左侧容器,同样可以通过设置minimumWidth和maximumWidth来固定宽度,效果一致。 - 确保主窗口没有其他多余的顶层布局,否则会导致布局逻辑冲突。
内容的提问来源于stack exchange,提问作者Gauthier
相关产品推荐
相关产品推荐

