Derzeit verwende ich eine Treeview. Das Problem ist, dass ich einen ziemlich großen Datensatz verwende. So, dass die GUI nicht massiv ist, habe ich die Größe des Treeview begrenzt das Fenster und hinzugefügt vertikale und horizontale Bildlaufleisten passen. Es zeigt die Daten genau an, wie ich es möchte, allerdings gibt es Geschwindigkeitsprobleme beim Scrollen in jede Richtung. Gibt es eine bessere/schnellere Möglichkeit, um tabellenblattähnliche Daten anzuzeigen?Wie sollte eine scrollbare Tabelle in Tkinter angezeigt werden?
Antwort
ich landete mit pandastable (https://github.com/dmnfarrell/pandastable). Da es eine schnelle und einfache Möglichkeit bietet, Daten in Tabellenform anzuzeigen. Es bietet auch eine Menge an Funktionalität gebaut, wie zum Beispiel: Sortieren, Filtern und Anwenden von Funktionen auf Spalten
erstaunlich, dass es im Grunde ein tkinter Leinwand mit geraden Linien und Text gezeichnet, wirklich schade, dass jemand tcl Entwicklung hat für tkinter eine richtige Tabelle Widget in C geschrieben – citizen2077
Die folgende Lösung wird zusammengeschustert, sollte aber das gewünschte Ergebnis erzielen. Ich werde eine Erklärung für sie schreiben, wenn ich die Chance bekommen:
from tkinter import *
class App:
def __init__(self, root):
self.entry = []
self.sv = []
self.root = root
self.canvas = Canvas(self.root, background="#ffffff", borderwidth=0)
self.frame = Frame(self.canvas, background="#ffffff")
self.scrolly = Scrollbar(self.root, orient="vertical", command=self.canvas.yview)
self.scrollx = Scrollbar(self.root, orient="horizontal", command=self.canvas.xview)
self.canvas.configure(yscrollcommand=self.scrolly.set)#, xscrollcommand=self.scrollx.set)
self.canvas.create_window((4,4), window=self.frame, anchor="nw", tags="self.frame")
self.scrolly.pack(side="left", fill="y")
self.canvas.pack(side="top", fill="both", expand=True)
self.scrollx.pack(side="bottom", fill="x")
self.frame.bind("<Configure>", self.onFrameConfigure)
for i in range(15):
self.entry.append([])
self.sv.append([])
for c in range(30):
self.sv[i].append(StringVar())
self.sv[i][c].trace("w", lambda name, index, mode, sv=self.sv[i][c], i=i, c=c: self.callback(sv, i, c))
self.entry[i].append(Entry(self.frame, textvariable=self.sv[i][c]).grid(row=c, column=i))
def onFrameConfigure(self, event):
self.canvas.configure(scrollregion=self.canvas.bbox("all"))
def callback(self, sv, column, row):
print("Column: "+str(column)+", Row: "+str(row)+" = "+sv.get())
root = Tk()
App(root)
root.mainloop()
- 1. Scrollbare Tabelle in Wikitext
- 2. scrollbare Listbox in einem Raster mit tkinter
- 3. Tkinter - Bilder werden nicht angezeigt
- 4. Bootsrap Vertikale Scrollbare Tabelle
- 5. Scrollbare DataTables Tabelle
- 6. Bild kann nicht angezeigt werden tkinter mit
- 7. UIAlertController sollte nicht angezeigt werden
- 8. Scrollbare Ansicht nicht korrekt in Appcelerator angezeigt
- 9. welche Schaltfläche sollte angezeigt werden
- 10. HTML, CSS: scrollbare Tabelle mit fester Fußzeile
- 11. Cross-Browser-kompatible scrollbare Tabelle
- 12. HTML5/CSS3 Scrollbare Daten Tabelle
- 13. Text sollte in zwei Zeilen angezeigt werden
- 14. Scrollbare Tabelle und Keydown-Funktion
- 15. Wie mache ich eine scrollbare Tabelle mit CSS
- 16. Zeilen werden in Tkinter GUI nicht richtig angezeigt
- 17. Transformieren Sie Tabelle mit Zeilen in eine scrollbare Liste
- 18. Wie wird eine Tabelle in ShowMessage angezeigt?
- 19. Wie sollte die Ansicht angezeigt werden, auf MVC in PHP
- 20. Warum sollte ein Meldungsfeld nicht angezeigt werden?
- 21. Tooltip sollte nicht auf MouseHover angezeigt werden
- 22. Swing - Scrollbare Grid
- 23. CheckboxList checkall sollte bedingt angezeigt werden?
- 24. tkinter Widget nicht angezeigt
- 25. Flexbox - eine scrollbare, eine feste?
- 26. Wie erstelle ich eine scrollbare Textbox?
- 27. Wie Inhalte aus MySQL-Tabelle in Android angezeigt werden?
- 28. Wie werden Array-Daten in einer benutzerdefinierten Tabelle angezeigt?
- 29. Scrollbare Container in Webseite
- 30. scrollbare Tabelle ohne Auswirkung auf die Tabellenausrichtung
Haben Sie Benutzer benötigen Zellen in der Tabelle in der Lage sein zu aktualisieren oder alle Daten statisch und geladen/vom Programm berechnet ? –
@EthanField Editierbare Daten wären schön. Wenn statische Daten jedoch viel schneller wären, würde ich mich definitiv für einen statischen Ansatz öffnen. – Roars
Beide sind möglich und beide sollten sehr gut in Bezug auf die Reaktionsfähigkeit, aber editierbare Formen sind viel ausführlicher. Gibt es einen Grund, warum Excel für diesen Zweck nicht ausreicht, wenn Sie eine direkte Eingabe benötigen? –