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

Tkinter中如何让Treeview滚动条固定显示(不受窗口大小影响)

解决Tkinter Treeview滚动条固定附着问题

你的代码存在布局逻辑问题,导致滚动条仅在窗口最大化时才显示,以下是修复方案:

核心问题分析

  • 用Label作为Treeview的容器控件不合适,Label并非为承载复杂布局设计,应替换为Frame。
  • LabelFrame未设置随窗口拉伸的属性,容器空间无法自适应窗口大小。
  • Treeview未配置填充和扩展属性,无法占满可用空间,滚动条自然无法正确附着。
  • 未设置Treeview的水平滚动联动命令。

修改后的完整代码

import tkinter as tk
from tkinter import ttk

def mainGUI():
    root = tk.Tk()
    root.geometry("700x300")
    root.title("test")
    # 配置根窗口行列权重,让第0列和第1行随窗口拉伸
    root.columnconfigure(0, weight=1)
    root.rowconfigure(1, weight=1)

    data = [["this is a long text","this is a long text","this is a long text","this is a long text","this is a long text","this is a long text"] for _ in range(14)]

    results_lf = ttk.LabelFrame(root, text="Results:")
    # 设置sticky让LabelFrame填满分配的空间
    results_lf.grid(row=1, column=0, padx=20, pady=0, sticky='nsew')
    # 配置LabelFrame的行列权重
    results_lf.columnconfigure(0, weight=1)
    results_lf.rowconfigure(0, weight=1)

    # 用Frame代替Label作为容器
    results_frame = ttk.Frame(results_lf)
    results_frame.grid(row=0, column=0, sticky='nsew')

    columnsHeader = ["1", "2", "3", "4", "5", "6"]

    tree = ttk.Treeview(results_frame, columns=columnsHeader, show='headings')
    for col in columnsHeader:
        tree.heading(col, text=col)
        # 可选:设置列宽,也可根据需求调整为自动适配
        tree.column(col, width=150)

    for line in data:
        tree.insert('', tk.END, values=line)
    # Treeview填充整个Frame空间并随窗口扩展
    tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

    sb_v = ttk.Scrollbar(results_frame, orient=tk.VERTICAL, command=tree.yview)
    sb_v.pack(side=tk.RIGHT, fill=tk.Y)

    sb_h = ttk.Scrollbar(results_frame, orient=tk.HORIZONTAL, command=tree.xview)
    sb_h.pack(side=tk.BOTTOM, fill=tk.X)

    # 配置Treeview与滚动条的双向联动
    tree.config(yscrollcommand=sb_v.set, xscrollcommand=sb_h.set)

    root.mainloop()

mainGUI()

关键修改点

  • 把resultsLabel替换为ttk.Frame,作为Treeview和滚动条的容器,确保布局逻辑正确。
  • 给根窗口和LabelFrame添加行列权重配置,让容器能随窗口大小自动拉伸。
  • Treeview的pack参数设置为fill=tk.BOTH, expand=True,使其占满容器空间。
  • 补充Treeview的xscrollcommand配置,实现水平滚动的双向联动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:16:06