![](/img/trans.png)
[英]Unable to see images using Tkinter Treeview for database processing
[英]Unable to display images in Tkinter Treeview properly
我希望我的方法從 sqlite 數據庫中提取圖像,並將它們顯示為 Treeview 中特定行的圖像。 不幸的是,它只顯示插入的最后一行中的圖像。 我在循環之外定義了一個單一的圖像,它根據我的需要在每一行顯示一個圖像。 這讓我相信,當我在循環中動態定義圖像時,圖像會被垃圾收集。 為了讓我從數據庫中提取圖像並將它們放在 Treeview 中,我不能在循環之外有單個圖像定義,但我不確定如何防止垃圾收集。
注意: db.getdata()
是來自另一個文件的 function,該文件從數據庫返回.fetchall()。
def update_records(self):
records = self.dbTree.get_children()
for element in records:
self.dbTree.delete(element)
db_rows = db.get_data()
#img = PhotoImage(file = 'earth.gif').subsample(30, 30)
for row in db_rows:
img = tk.PhotoImage(data=row[5]).subsample(20, 20)
self.dbTree.insert('', 0, text = row[0], values = (row[1], row[2], row[3], row[4]), image
= img)
self.dbTree.image = img
由於您使用相同的屬性self.dbTree.image
來保存圖像的引用,因此只保留最后一張圖像,其他圖像被垃圾收集。
使用字典存儲圖像:
self.dbTree.images = {}
for row in db_rows:
img = tk.PhotoImage(data=row[5]).subsample(20, 20)
self.dbTree.insert('', 0, text=row[0], values=(row[1], row[2], row[3], row[4]), image=img)
self.dbTree.images[row[0]] = img
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.