Seite 1 von 1

Tabelle scrollen mit feststehendem Header

Verfasst: Dienstag 21. April 2020, 10:35
von DMD-OS
Hallo
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()


Re: Tabelle scrollen mit feststehendem Header

Verfasst: Mittwoch 22. April 2020, 16:05
von DMD-OS
Trotzdem danke :)