Ich verwende derzeit eine Funktion, um eine Pandas Dataframe in einem Tabellenformat anzeigen. Ich möchte in der Lage sein, einige Funktionen hinzuzufügen, um einzelne Zellen der Baumansicht basierend auf deren Inhalt zu formatieren, z. wenn sie Zeichenkette enthalten ‚X‘ oder, wenn ihr Wert höher als Y. istFormat einzelne Zelle/Element lieber als ganze Zeile in Tkinter Ttk Baumansicht
Die Update-Funktion zur Zeit implementiert ist wie folgt:
def updateTree(self, dataframe):
'''
Updates the treeview with the data in the dataframe
parameter
'''
#Remove any nan values which may have appeared in the dataframe parameter
df = dataframe.replace(np.nan,'', regex=True)
#Currently displayed data
self.treesubsetdata = dataframe
#Remove existing items
for item in self.tree.get_children(): self.tree.delete(item)
#Recreate from scratch the columns based on the passed dataframe
self.tree.config(columns= [])
self.tree.config(columns= list(dataframe.columns))
#Ensure all columns are considered strings and write column headers
for col in dataframe.columns:
self.tree.heading(col,text=str(col))
#Get number of rows and columns in the imported script
self.rows,self.cols = dataframe.shape
#Populate data in the treeview
for row in dataframe.itertuples():
self.tree.insert('', 'end',values = tuple(row[1:]))
#Minimise first column
self.tree.column('#0',width=0)
self.tree.update()
jemand bestätigen kann, dass man in der Tat bearbeitet eine einzelne Zelle in einem treview?
Wenn ja, gibt es Ideen, wie dies umgesetzt werden könnte?
Ich glaube nicht, dass das möglich ist. Gibt es einen Grund, warum Sie nicht stattdessen ein einfaches Raster aus Label- oder Entry-Widgets erstellen möchten? – Novel
Ich benutze eine benutzerdefinierte Klasse erstellen, anzeigen, fügen Sie Bildlaufleisten, zu aktualisieren und komplexe Art durchführen und die Filter gebunden Tasten auf die angezeigten Daten. Ich bin mir nicht sicher, ob ich den Rahmen an dieser Stelle überarbeiten kann. Wenn es nicht möglich ist, muss ich die Funktionalität überdenken. – user3535074