pands style object in tkinter anzeigen

Fragen zu Tkinter.
Antworten
Tobias74
User
Beiträge: 10
Registriert: Montag 4. Mai 2020, 20:36

Hallo Zusammen,
ich möchte gerne in einer tkinter GUI ein pandas Dataframe ausgeben.
Das funktioniert auch wunderbar, allerdings hätte ich gerne die Ausgabe als Tabelle mit Rahmen.
Wenn ich df.style nutze, kann das Objekt nicht angezeigt werden. Wie kann ich eine formatierte Tabelle mit Rahmen in
tkinter anzeigen, bzw. das style Objekt anzeigen?

Code: Alles auswählen

import tkinter as tk
import pandas as pd

df=pd.DataFrame({"Spalte1":[1,2,3,4],"Spalte2":[1,4,6,7]})

root = Tk()
root.title("Muster GUI")

frame=LabelFrame(root,text="display dataframe", padx=10, pady=10)
frame.grid(row=0, column=0, padx=10, pady=10)
text=tk.Text(frame, height=10, width=60)
text.grid(row=0,column=0, padx=10)
text.insert("end",df.style)

root.mainloop()

Benutzeravatar
__blackjack__
User
Beiträge: 14084
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Tobias74: Falls da noch niemand anders etwas geschrieben hat, musst Du das wohl selbst programmieren. Da Du das `Styler`-Objekt hier gar nicht veränderst, stellt sich die Frage ob Du es dafür überhaupt brauchst‽
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Tobias74
User
Beiträge: 10
Registriert: Montag 4. Mai 2020, 20:36

danke dir, ich dachte es gibt vielleicht einen einfachen Trick auf den ich nicht gekommen bin.
Mir geht es nur um die Optik die Ergebnisdaten einer Berechnung übersichtlicher als Tabelle mit Rahmen darzustellen, wie
es auch erfolgt wenn man es nicht über ein Tkinter widget ausgibt.
Gibt es denn eine einfache Alternative oder würdest du das über pandastable lösen?
Vielen Dank und viele Grüße
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

HalloTobias74,
wenn's nicht eine Tabelle sein muss, Tkinter enthält die Listbox.
In dieser kannst Du die Spalten über Stringformatierung einstellen.
Funktioniert aber nur sauber mit nicht proportionalen Schriften.
Gruss Peter
Antworten