tkinterのtreeviewにて、データベースから取得した大量のデータを表示させたいと考えています。
pythom
1import tkinter as tk 2import tkinter.ttk as ttk 3 4class Treelist(tk.Frame): 5 def __init__(self, root): 6 super().__init__(root) 7 self.pack(fill=tk.Y) 8 9 self.tree = ttk.Treeview(self, height=30, show="headings") 10 self.hscrollbar = ttk.Scrollbar(self, orient=tk.HORIZONTAL, command=self.tree.xview) 11 self.scrollbar = ttk.Scrollbar(self, command=self.tree.yview) 12 self.tree.configure(xscrollcommand=lambda f, l: self.hscrollbar.set(f, l)) 13 self.tree.configure(yscrollcommand=lambda f, l: self.scrollbar.set(f, l)) 14 self.scrollbar.pack(side="right", fill="y") 15 self.tree.pack(expand=1, fill=tk.BOTH) 16 self.hscrollbar.pack(fill="x") 17 18 self.state() 19 self.tree_insert() 20 21 def state(self): 22 self.tree.configure(column=(1,2,3)) 23 #ヘッダーテキスト 24 self.tree.heading(1,text="種類") 25 self.tree.heading(2,text="名前") 26 self.tree.heading(3,text="説明") 27 #列の幅 28 self.tree.column(1, width=100, anchor="center", stretch=tk.NO) 29 self.tree.column(2, width=100, anchor="center", stretch=tk.NO) 30 self.tree.column(3, width=200, anchor="center", stretch=tk.NO) 31 32 def tree_insert(self): 33 self.item = () 34 for i in range(10000): 35 self.item = self.item + ((i,"犬","ワンと鳴く"),) 36 for i in range(len(self.item)): 37 self.num = self.item[i][0] 38 self.name = self.item[i][1] 39 self.text = self.item[i][2] 40 self.tree.insert("", "end", values=(self.num, self.name, self.text)) 41 42root = tk.Tk() 43root.geometry('900x750') 44tree = Treelist(root) 45root.mainloop()
self.itemはデータベースから取得して、文字列の一致検索に当てはまるデータを10000件として、仮に置いたものです。今回は、treeviewでの大量データの表示についてお尋ねしたかったので、このように省略させていただきました。
このように、10000件のデータを一気にinsertすると、パソコンの環境次第ではアプリが止まってしまいます。
また、これが1000000件のデータとなると、ハイスペックなパソコンでしか処理が追いつきません。
このような場合、どのようにすれば、メモリをあまり使用せずに表示することができるのでしょうか?
どうぞ宜しくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/24 08:21