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

如何让Tkinter的LabelFrame占窗口80%高度并支持动态调整?

解决方案

要实现两个Frame按80%/20%的高度比例动态适配窗口大小,只需调整pack方法的参数,利用权重分配和空间填充特性即可:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.geometry("800x600")  # 初始窗口大小可按需调整

# 创建占80%高度的console_frame
console_frame = ttk.LabelFrame(root, text="控制台")
# weight设为4,占总权重的4/5(80%),fill="both"填充水平+垂直空间,expand=True允许扩展
console_frame.pack(side="top", fill="both", expand=True, weight=4)

# 在console_frame内添加文本框示例
text_box = tk.Text(console_frame)
text_box.pack(fill="both", expand=True)

# 创建占20%高度的另一个Frame
other_frame = ttk.LabelFrame(root, text="操作区")
# weight设为1,占总权重的1/5(20%)
other_frame.pack(side="bottom", fill="both", expand=True, weight=1)

root.mainloop()

关键参数说明:

  • weight:决定窗口调整时组件分配额外空间的比例。总权重为4+1=5,因此console_frame占4/5=80%,other_frame占1/5=20%,窗口大小变化时比例保持不变。
  • fill="both":让Frame同时填充分配到的水平和垂直空间,避免仅拉伸宽度不拉伸高度。
  • expand=True:允许Frame扩展以占据窗口可用空间,确保权重设置生效。

原代码仅设置了fill="x"(仅填充水平方向),且未配置weight参数,因此无法实现垂直方向的动态比例适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:30:29