目前我正在使用Treeview。问题是我正在使用相当大的数据集。为了使GUI不是很大,我限制了Treeview的大小以适应窗口并添加了垂直和水平滚动条。它显示我想要的数据,但在每个方向滚动时都有速度问题。有没有更好/更快的方式来显示类似电子表格的数据。如何在Tkinter中显示可滚动的电子表格?
0
A
回答
1
我结束了使用pandastable(https://github.com/dmnfarrell/pandastable):当我得到机会,我会为它编写一个解释。因为它提供了一种以类似方式在电子表格中显示数据的快捷方式。它还提供了许多内置的功能,例如:对列进行排序,过滤和应用功能
+1
令人惊讶的是,它基本上是一个tkinter画布,用直线和文本绘制,真正的耻辱,有人开发tcl没有在C中为tkinter编写适当的表格小部件 – citizen2077
1
下面的解决方案拼凑在一起,但应达到预期的结果。
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. 在tkinter中使用滚动条显示表格
- 2. 显示tkinter滚动条中的文件
- 3. 如何在MATLAB中显示图像的可滚动网格GUI
- 4. 应该如何在电子表格中显示持续时间?
- 5. 如何在记录器中显示电子表格名称
- 6. 如何在iPhone视图中显示类似电子表格的表格?
- 7. 如何在SWT表格中始终显示垂直滚动条?
- 8. 在php页面上显示可编辑的电子表格
- 9. 如何在活动内部显示滚动表格?
- 10. 如何在谷歌电子表格中显示谷歌表格值
- 11. 可滚动的固定表格在左侧显示
- 12. 如何在wpf表单上显示可滚动的treeview控件
- 13. 如何在谷歌电子表格中隐藏并显示特定名称已损坏谷歌电子表格
- 14. 在html中使用可滚动的表格显示数据库表的行值
- 15. 使用tkinter的网格内的可滚动列表框
- 16. 电子表格styles.xml显示为零
- 17. Google电子表格(显示去年)
- 18. 如何滚动Tkinter的
- 19. Google电子表格:在单元格中显示文档URL。可能?
- 20. TKinter的可滚动标签?
- 21. 在UITextView中滚动电传文本显示不滚动
- 22. 如何在电子中显示RTSP流?
- 23. 在Excel电子表格中插入多重滚动条
- 24. Chromium永久显示电子应用程序中的滚动条?
- 25. 如何在离子中显示左侧的滚动条
- 26. 如何获得每行一次显示电子邮件的表格的表格
- 27. 可滚动表格
- 28. 为什么表格滚动不显示?
- 29. 如何在电子表格中打开XML电子表格“uncollapse”单元格?
- 30. 如果值已存在,突出显示Google电子表格中的单元格
您是否需要用户能够更新电子表格中的单元格,还是所有数据都是静态的并且由程序加载/计算? –
@EthanField有可编辑的数据会很好。但是,如果有静态数据会使它快很多,我肯定会打开一个静态的方法。 – Roars
两者都是可能的,两者在响应性方面都应该表现得非常好,但是具有可编辑形式的内容更深入。如果您确实要求Excel可以直接输入,Excel有没有足够的理由支持它? –