Ich versuche eine Tabelle mit festem Header und einem scrollbaren Inhalt zu erstellen.
Mein Code stellt erstmal nur die Grundlagen dar.
Mit dem Einbinden von Canvas und Autoscrollbars hab ich kein Problem,
vielmehr hoffe ich Tipps zu bekommen, wie ich Header und Inhalt trennen kann, damit nur der Inhalt scrollable ist ohne
die Abhändigkeit der Spaltenbreite zwischen beiden zu verlieren.
Wenn ich ein Header- und ein Inhaltsframe einbaue, sind die Spalten von Header und Inhalt unter Umständen unterschiedlich.
Hat da jmd bidde ma einen Tipp?
Code: Alles auswählen
import tkinter as tk
root = tk.Tk()
root.geometry("500x350")
user_frame = tk.Frame(root)
user_frame.pack(fill=tk.BOTH, expand=True)
lb_frame = tk.LabelFrame(user_frame,
text=" Tabelle 1 ",
font=('Arial', 9, 'bold'),
fg="gainsboro",
bg="grey"
)
lb_frame.pack(side=tk.TOP, fill=tk.BOTH, expand=True, padx=20, pady=10)
lb_frame.grid_rowconfigure(0, weight=0)
lb_frame.grid_rowconfigure(1, weight=0)
lb_frame.grid_columnconfigure(0, weight=1)
lb_frame.grid_columnconfigure(1, weight=1)
lb_frame.grid_columnconfigure(2, weight=1)
lb_frame.grid_columnconfigure(3, weight=1)
lb_frame.grid_columnconfigure(4, weight=1)
# HEADER
cols = [' Tabellennamen ', ' Tabellendaten \n Aktiv/Zeilen [Spalten] ', ' Tabellen-\nauswahl ']
for column in range(len(cols)):
tk.Label(lb_frame, text=cols[column], relief=tk.GROOVE, bg='lightsteelblue').grid(row=0, column=column*2, columnspan=2, sticky=tk.NSEW)
# CONTENT
user_info = [['Datenmuster_vr_2019-12-04.xlsx', 'Projekt', 33, 18, 25],
['Datenmuster_vr_2019-12-04.xlsx', 'Name', 2, 38, 25],
['Datenmuster_vr_2019-12-04.xlsx', 'Straße', 1, 29, 25],
['Datenmuster_vr_2019-12-04.xlsx', 'Hausnummer', 1, 12, 25],
['Datenmuster_vr_2019-12-04.xlsx', 'PLZ', 2, 3, 25],
['Datenmuster_vr_2019-12-04.xlsx', 'Ort', 2, 14, 25],
['Datenmuster_vr_2019-12-04.xlsx', 'Datum', 2, 6, 25]
]
for zeile, cell_info in enumerate(user_info):
name = cell_info[0]
text = cell_info[1]
rows = cell_info[2]
columns = cell_info[3]
row_limit = cell_info[4]
if row_limit is not None and row_limit < rows:
parser = row_limit
else:
parser = rows
tk.Label(lb_frame, text=cell_info[1], justify=tk.CENTER, anchor=tk.W, relief=tk.GROOVE).grid(row=zeile+1, column=0, columnspan=2, sticky=tk.NSEW)
tk.Label(lb_frame, text="{0}/{1} [{2}]".format(parser, rows, columns), justify=tk.CENTER, relief=tk.GROOVE).grid(row=zeile+1, column=2, columnspan=2, sticky=tk.NSEW)
tk.Button(lb_frame, text='Button_'+str(zeile), justify=tk.CENTER, relief=tk.GROOVE).grid(row=zeile+1, column=4, columnspan=2, sticky=tk.NSEW)
root.mainloop()