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
相关产品推荐
相关产品推荐

