Elemente einer Tabelle + Scrollbar werden falsch erstellt
Verfasst: Donnerstag 23. April 2020, 09:20
Guten Tag,
ich habe eine Tabelle erstellt, welche aus Spaltenbezeichnungen (Name, Vorname,..) und Entry's besteht. Die Tabelle hat mehrere Zeilen, weswegen ich eine Scrollbar an die rechte Seite der Tabelle angefügt habe.
Folgendes Problem:
Die breite der Entry-Felder richtet sich nicht nach der breite der Spaltenbezeichnungen aus. Das führt dazu, dass nur 3 anstatt 5 Spalten angezeigt werden. Natürlich kann man die Breite der einzelnen Entry's manuell mit width ändern. Das Resultat sieht aber nicht besonders schön aus. Stattdessen sollen die Breiten der Entry's jeder Spalte sich an der Spaltenbezeichnung ausrichten.
Hat jemand von euch eine Idee, wie man dieses für das folgende Minimalbsp. umsetzen kann:
Freundliche Grüße
Martin
ich habe eine Tabelle erstellt, welche aus Spaltenbezeichnungen (Name, Vorname,..) und Entry's besteht. Die Tabelle hat mehrere Zeilen, weswegen ich eine Scrollbar an die rechte Seite der Tabelle angefügt habe.
Folgendes Problem:
Die breite der Entry-Felder richtet sich nicht nach der breite der Spaltenbezeichnungen aus. Das führt dazu, dass nur 3 anstatt 5 Spalten angezeigt werden. Natürlich kann man die Breite der einzelnen Entry's manuell mit width ändern. Das Resultat sieht aber nicht besonders schön aus. Stattdessen sollen die Breiten der Entry's jeder Spalte sich an der Spaltenbezeichnung ausrichten.
Hat jemand von euch eine Idee, wie man dieses für das folgende Minimalbsp. umsetzen kann:
Code: Alles auswählen
from tkinter import *
root = Tk()
Label(root, text = "Name").grid(row = 0, column = 0)
Label(root, text = "Vorname").grid(row = 0, column = 1)
Label(root, text = "Land").grid(row = 0, column = 2)
Label(root, text = "Stadt").grid(row = 0, column = 3)
Label(root, text = "Adresse").grid(row = 0, column = 4)
container = Frame(root)
canvas = Canvas(container, height = 190)
scrollbar = Scrollbar(container, orient="vertical", command=canvas.yview)
scrollable_frame = Frame(canvas)
scrollable_frame.bind(
"<Configure>",
lambda e: canvas.configure(
scrollregion=canvas.bbox("all")
)
)
canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")
canvas.configure(yscrollcommand=scrollbar.set)
for i in range(20): # number of rows
for j in range(5): # number of columns
Entry(scrollable_frame).grid(row = i + 1 , column = j)
container.grid(row = 1, column = 0, columnspan = 5)
canvas.pack(side="left", fill="both", expand=True)
scrollbar.pack(side="right", fill="y")
root.mainloop()
Martin