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

如何限制Tkinter网格布局中LabelFrame的尺寸比例保持固定

问题原因

你已经正确设置了两列的weight=1,但tkinter的grid布局中weight仅用于分配剩余额外空间,如果某一列内部的控件(比如加载后的PDF图片)本身尺寸更大,会优先撑开列宽,导致两列比例失衡。

解决方案

只需要给承载两个LabelFrame的父容器的两列设置uniform参数,将它们归到同一个等宽分配组即可,tkinter会强制该组内的所有列保持相同宽度。
找到你的init_frame方法中对self.frame的列配置部分,修改为:

def init_frame(self):
    self.columnconfigure(0, weight=1)
    self.rowconfigure(0, weight=1)

    self.frame = Frame(self)
    self.frame.rowconfigure(0, weight=1)
    # 增加uniform参数,同组列强制等宽
    self.frame.columnconfigure(0, weight=1, uniform="equal_col")
    self.frame.columnconfigure(1, weight=1, uniform="equal_col")
    self.frame.grid(column=0, row=0, sticky='news', padx=10, pady=10)

    self.init_pdf_frame()
    self.init_ocr_frame()

uniform的取值可以自定义,只要两个列的取值相同就会被归到同一组,自动平分父容器的可用宽度,不受内部内容大小影响,调整窗口大小时也会始终保持1:1的比例。

可选优化

你当前的clear_file方法会重复创建PDF区域的控件,长期使用可能会有控件冗余问题,可以改成直接清除图片即可:

def clear_file(self):
    self.pdf_frame.configure(image='', text="PDF result appears here")
    self.pdf_frame.image = None
效果展示

修改后加载PDF不会再出现PDF区域挤占OCR区域的问题,两个LabelFrame会始终平分窗口宽度:

  • 加载前界面
    加载前界面
  • 加载后界面
    加载后界面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:27:03