Tabellen mit Python erstellen
Zwar ist es nicht meine Absicht mit der Überschrift dieses Beitrags einen Reim zu bilden, wohl aber zu zeigen, wie sich in Python recht einfach eine Tabelle samt Scrollbalken erzeugen lässt.
Als GUI-Toolkit soll uns tkinter dienen. Weitere Module, außer das von tkinter natürlich, benötigen wir nicht. Ohne weiteres Vorgeplänkel, präsentiere ich den Code für ein kleines Programmfenster mit versprochener Tablle (bestehend aus 3 Spalten) und einen Scrollbalken und anschließend folgt die Erklärung.
### Module import
from tkinter import *
from tkinter import ttk
### Create main window
root = Tk()
root.geometry("550x200")
root.title("Table-Window")
### Add a subframe
tree_frame = Frame(root, background='white')
tree_frame.place(x=10, y=40)
### Create treeview ...
tree = ttk.Treeview(tree_frame, column=("c1", "c2", "c3"), show='headings', height=5)
### ... with scrollbar
vsb = ttk.Scrollbar(root, orient="vertical", command=tree.yview)
vsb.place(x=530, y=60, height=100)
tree.configure(yscrollcommand=vsb.set)
### listbox for directories
tree.column("# 1", anchor=CENTER, width=50)
tree.heading("# 1", text="ID")
tree.column("# 2", anchor=CENTER, width=235)
tree.heading("# 2", text="Name")
tree.column("# 3", anchor=CENTER, width=235)
tree.heading("# 3", text="Beard length")
tree.pack()
### Read file and put it in a list
file_value = open("file_list", "r")
tree_value = []
for i in file_value:
line_list = i.split()
tree_value.append(line_list)
### Fill table with values
for i in tree_value:
tree.insert('', 'end', values=(i))
### Let the main window won't disappear
root.mainloop()
Zunächst einmal wird ein Standardprogrammfenter namens ‚root‘ erzeugt. und in diesem ein weiterer Subframe erstellt und platziert (Zeile 1-12).
Dieses Subframe wird dann mit einem sogenannten „Treeview“ mit 3 Spalten ausgestattet (Zeile 15). Das Subframe ist lediglich optional, der Treeview lässt sich auch ohne weiteres in das Hauptfenster ‚root‘ platzieren, hierfür muss lediglich die Platzierungsanweisung von ‚tree_frame‘ nach ‚root‘ in Zeile 15 geändert werden.
Als nächstes kommt der Scrollbalken an die Reihe. Diesen platziere ich der Optik zuliebe (und damit er nicht die Werte der Tabelle hinterher überlagert) nicht in den Subframe ‚tree_frame‘, sondern diesmal in das Hauptfenster’root‘ ein. Die Anweisung ‚orient=“vertical“‚ zeichnet den Balken in die Höhe und ‚command=tree.yview‘ sorgt dafür, dass sich der Balken auch mit der Maus bewegen lässt.
Von Zeile 23-28 werden schlußendlich die Spalten mitsamt Namen definiert.
Nun geht es ans Eingemachte, der Befüllung dieser Tabelle. Zwar lassen sich die Elemente auch per Hand eintragen, an dieser Stelle beschränke ich mich allerdings darauf, die Werte durch eine zuvor erstellte Liste zu überführen. Im Ordner der Python-Datei befindet sich noch eine Liste namens ‚file_list‘. Diese ist mit folgenden Werten ausgestattet:
1 Fjell Long
2 Folkvar Short
3 Halfdan Middle
4 Leif Long
5 Ragnar Middle
6 Knut Short
7 Lagertha None
8 Alva None
9 Ingrid None
10 Harald Long
11 Gunnhild None
Um auf diese Datei nun zuzugreifen und sie in die Tabelle zu überführen, öffnen wir sie zunächst (Zeile 32) und erzeugen eine Liste, die als Zwischenspeicher bis zur finalen Überfühurung der Werte dient (Zeile 33). Es folgt eine for-Schleife jede Zeile innerhalb der geöffneten Datei ‚file_list‘ zunächst in eine eigene Liste separiert und diese einzelnen Listen in die zuvor initiierte Übergeordnete Liste ‚tree_value‘ zusammenfasst.
Das Ergebnis ist folgendes: