i’ve created a program that shows the database content in gui Tkinter.
i can scroll vertically, yet when it come to horizontal scrolling it did not work for example in the image below i can’t scroll to see the rest of groups.
please any help and thank you in advance
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()
or many be the problem is here
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()
2