tkinter吧 关注:126贴子:362
  • 2回复贴,共1

问一个问题,关于 ttk.Treeview

取消只看楼主收藏回复

( 楼主是 python 小白 )
用 ttk.Treeview 显示 4万 多行。
文字的话,没什么问题。
每一行,加一个图标的话,(就只需要几种不同的图标),打开来也没什么问题;
但是 窗口 关闭的 时候,非常慢。
像下面这样,同一种 图标,重复用了 45000 次:


图片很小 16 x 16 大小的,
打开来都没有问题,就是关闭时,太慢了。
如果 数量 再增大到 5万,我电脑上,就更慢了。
请教一下各位大佬:
是不是上面用的方法有问题 ?
有没有办法,让程序关闭时,快一点 ?
------------------
------------------
------------------
import tkinter as tk
from tkinter import ttk
class maketree:
def __init__(self, parent):
self.tree = ttk.Treeview(parent,)
self.scrollbar_1 = ttk.Scrollbar( parent, orient=tk.VERTICAL, command=self.tree.yview)
self.scrollbar_2 = ttk.Scrollbar( parent, orient=tk.HORIZONTAL, command=self.tree.xview)
self.tree.configure(yscrollcommand=self.scrollbar_1.set)
self.tree.configure(xscrollcommand=self.scrollbar_2.set)
self.tree.grid(row=0,column=0,sticky=(tk.N,tk.S,tk.E,tk.W))
self.scrollbar_1.grid(row=0,column=1,columnspan=2,sticky=(tk.N,tk.S))
self.scrollbar_2.grid(row=1,column=0,sticky=(tk.W,tk.E))
if __name__ == "__main__" :
root=tk.Tk()
root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)
a=maketree(root)
image_grey = tk.PhotoImage( file= r'.\grey.png')
a.tree['columns'] = ("test 1","test 2")
for x in range(45000):
x+=1
a.tree.insert('','end',x ,text=str(x),image=image_grey,values =("just for test",) )
root.mainloop()


IP属地:江苏1楼2021-05-12 17:12回复
    楼上的方法,是强制退出,换个函数用 sys.exit(),也是可以的。
    正常的方法:如果用的图标数量虽然大,但种类不多,可以设置几个不同的 tag ,用
    treeview.tag_configure(.........)
    这个函数设置图片。


    IP属地:江苏3楼2021-09-01 00:17
    回复
      这个是我做的,功能就是 显示 MAME 程序的 游戏列表,调用 MAME 运行游戏。
      自己用的话,感觉还行。
      分享给别人用就麻烦了:
      用 pyinstaller 转 exe :
        单文件的 .exe ,它自己先解压到系统临时文件夹,然后再运行,感觉就是个假的单文件,不喜欢这种;
        文件夹模式的 .exe ,附带的文件数量又太多了,这个很麻烦啊。
      内置主题 clam 效果图:

      使用 第三方 主题 效果图:

      调用 另外一个程序 —— MAME,运行游戏:


      IP属地:江苏4楼2021-09-01 00:30
      收起回复