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

Python Tkinter中Treeview右侧垂直滚动条布局异常问题

问题诊断

你的代码里有3个直接导致滚动条布局异常的错误:

  • 同一个父容器(窗口根组件)下混用grid()和pack()布局:你给frame同时调用了grid()和pack(),Tkinter中同层级控件混用两种布局会触发布局计算逻辑混乱,控件位置完全不可控。
  • Treeview控件占位冲突:你给Treeview设置了columnspan=2,直接占满了frame内第0、1两列的横向空间,放在column=1位置的滚动条会被Treeview完全遮挡,自然没法显示在右侧。
  • 缺失滚动条双向绑定:你只给滚动条配置了控制Treeview纵向滚动的command,但没有给Treeview配置yscrollcommand同步滚动条状态,就算位置调对了,滚动条滑块也不会跟着内容移动。
修正后代码
import tkinter as tk
from tkinter import ttk
import customtkinter

class Product:
    WIDTH = 500     
    HEIGHT = 500

    db_name = 'database.db'

    def __init__(self, window):
      
        self.wind = window
        self.wind.title('Aplicación')

        screen_width=self.wind.winfo_screenwidth()
        screen_height=self.wind.winfo_screenheight()

        x= (screen_width / 2) - (Product.WIDTH /2)
        y= (screen_height / 2) - (Product.HEIGHT /2)

        self.wind.geometry(f"{Product.WIDTH}x{Product.HEIGHT}+{int(x)}+{int(y)}")
    
        self.wind.resizable(False, False)

        frame = customtkinter.CTkFrame(self.wind, corner_radius=5)
        # 移除冲突的grid布局调用,仅保留pack
        frame.pack(expand=True)
        

        self.tree = ttk.Treeview(master=frame,height = 10, selectmode="browse")
        # 移除columnspan=2配置,Treeview仅占第0列,给滚动条留出第1列位置
        self.tree.grid(row=2, column=0, pady=(10,20), sticky='E')
        self.tree.heading('#0', text = 'Ultimos registros', anchor = tk.CENTER)
     
        scrollbar = ttk.Scrollbar(frame, orient='vertical', command=self.tree.yview)
        scrollbar.grid(row=2, column=1, sticky="NSW", pady=(10,20))
        # 绑定Treeview到滚动条,实现滑块位置同步
        self.tree.configure(yscrollcommand=scrollbar.set)

        self.get_fechas()
可选优化

如果需要让滚动条和Treeview完全贴合没有缝隙,可以给Treeview的grid参数加padx=(0,0),同时把Treeview和滚动条的sticky参数分别设为E(靠右对齐)和NSW(靠左对齐贴紧Treeview),上面的修正代码已经加了这个配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:06:25