我正在创建一个基本的应用程序来学习python。
此应用程序将由显示在tkinter GUI中的pandas数据框组成,用户可以在其中选择数据框中的行,然后使用每次用户选择特定行时都会填充的其他单独的文本框来编辑或删除该行。 / p>
当前,我只能在文本框中显示数据框,但这必须是一个列表框,以便用户可以轻松地选择行并滚动浏览100行的数据框。
我的代码段如下:
outp = Text(self.window,height = 10, width = 100) #declaring the text box
outp.insert(END, df) #adding the dataframe (df) to the text box
我在互联网上搜寻了一个答案,但是解决方案都是针对这些用例的,它们通常会说“使用标签盒”。
当我将“文本”更改为“列表框”时,数据框显示为一长行。
我非常感谢您的投入。
答案 0 :(得分:0)
使用Treeview解决。
代码段如下:
def df_to_list(self,df):
self.tree["columns"] = df.columns.values.tolist()
for x in range(len(df.columns.values)):
self.tree.column(df.columns.values[x], width=100)
self.tree.heading(df.columns.values[x], text=df.columns.values[x], command=self.populate_selection)
for index, row in df.iterrows():
self.tree.insert("",0,text=index,values=list(row))
self.tree.grid(row=50,column=0,rowspan=1,columnspan=12,sticky=N+E+W+S)
self.tree.bind("<<TreeviewSelect>>", self.populate_selection)
希望可以帮助其他人尝试此操作