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

Tkinter中Treeview水平滚动条失效问题求助

Tkinter Treeview水平滚动条失效问题求助

我开发了一款基于Tkinter的GUI程序用于展示数据库内容,目前垂直滚动功能正常,但水平滚动条无法工作,例如截图中无法滚动查看剩余的分组列。以下是相关代码,问题可能出在初始化或数据展示逻辑中,恳请提供帮助!

数据库查看器界面

初始化代码

class DatabaseViewer:
    def __init__(self, root):
        self.root = root
        self.root.title("Database Viewer")

        # Create Combobox for table selection
        self.label = ttk.Label(self.root, text="Select Table:")
        self.label.pack(pady=10)

        self.table_combobox = ttk.Combobox(self.root)
        self.table_combobox.pack(pady=5)
        self.table_combobox.bind("<<ComboboxSelected>>", self.show_table_data)

        # Create a frame to hold the Treeview and scrollbars
        self.frame = ttk.Frame(self.root)
        self.frame.pack(fill="both", expand=True, padx=10, pady=10)

        # Create the Treeview to display the table data
        self.table_treeview = ttk.Treeview(self.frame, show="headings")
        self.table_treeview.pack(side="left", fill="both", expand=True)

        # Add vertical scrollbar
        self.v_scrollbar = ttk.Scrollbar(self.frame, orient="vertical", command=self.table_treeview.yview)
        self.v_scrollbar.pack(side="right", fill="y")
        self.table_treeview.configure(yscrollcommand=self.v_scrollbar.set)

        # Add horizontal scrollbar
        self.h_scrollbar = ttk.Scrollbar(self.root, orient="horizontal", command=self.table_treeview.xview)
        self.h_scrollbar.pack(fill="x")
        self.table_treeview.configure(xscrollcommand=self.h_scrollbar.set)

        # Load table names into the Combobox
        self.load_table_names()

数据展示逻辑代码

def show_table_data(self, event):
    # Get the selected table name
    selected_table = self.table_combobox.get()

    # Clear the Treeview
    self.table_treeview.delete(*self.table_treeview.get_children())
    self.table_treeview["columns"] = ()

    # Fetch data from the selected table
    try:
        conn = sqlite3.connect('test.db')
        cursor = conn.cursor()

        # Fetch column names and table data
        cursor.execute(f"PRAGMA table_info({selected_table});")
        columns = [col[1] for col in cursor.fetchall()]

        cursor.execute(f"SELECT * FROM {selected_table};")
        rows = cursor.fetchall()

        # Set columns in Treeview
        self.table_treeview["columns"] = columns
        for col in columns:
            self.table_treeview.heading(col, text=col)
            self.table_treeview.column(col, anchor="center", width=100)

        # Insert rows into the Treeview
        for row in rows:
            self.table_treeview.insert("", "end", values=row)

    except sqlite3.Error as e:
        messagebox.showerror("Error", f"Error fetching table data: {str(e)}")
    finally:
        conn.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:05:11