ttk Treeview
に画像を追加するにはどうすればよいですか?コード例:Tkinter Treeviewに値としてピクチャを追加するには?
from tkinter import *
from ttk import *
from tkinter import ttk
import json
from PIL import Image, ImageTk
okno = Tk()
def maketable():
style = ttk.Style(okno)
style.configure("TVS.Treeview", rowheight=40)
tv = Treeview(okno, style="TVS.Treeview")
tv['columns'] = ('LName', 'Pic')
tv.heading("#0", text='Jméno', anchor='w')
tv.column("#0", anchor="w", width=200)
tv.heading('LName', text='Příjmení')
tv.column('LName', anchor='center', width=200)
tv.heading('Pic', text='Obrazek')
tv.column('Pic', anchor='center', width=200)
dbf = open("xxx.json", 'r')
db = json.loads(dbf.read())
for i in range(0, len(db)):
root_pic1 = Image.open(db[i]["Pic"])
root_pic2 = ImageTk.PhotoImage(root_pic1)
tv.insert('', 'end', image=root_pic2, text=db[i]['Name'], values=(db[i]['LName']))
tv.pack()
def main():
okno.mainloop()
if __name__ == '__main__':
maketable()
main()
私は写真を持っているために、「ピック」コラムをしたい - これは値であるため、画像が#0
であってはならないことを意味します。 db[i]["Pic"]
にはファイルパスがあります。 values=()
イメージを追加できません。何も表示されません。
EDIT:ソリューションのおかげではなく、複数の画像のdoesntの仕事:@Naeと@furasが指摘したと同様の機能が終了し、あなたのイメージは、ガベージコレクションを取得するとき
for i in range(0, len(db)):
tv._image = Image
tv._image = Image.open(db[i]["Pic"])
tv._image.thumbnail((100, 200), PIL.Image.ANTIALIAS)
tv._image = ImageTk.PhotoImage(tv._image)
tv.insert('', 'end', image=tv._image, values=(db[i]['Name'], db[i]['LName']))
tv.pack()
[この](https://stackoverflow.com:複数の画像について、あなたはリストを作成する必要があります/ questions/37549976/tkinter-ttk-treeview-root-node-icon-image-does-not-appear)が役立ちます。 – Nae
イメージをロードするコードが表示されません。それを示す。 PIL/Pillowを使用している場合は、http://effbot.org/tkinterbook/photoimage.htmの枕とガベージコレクターの問題に関するノートを読んでください。 – furas
@Naeは試しましたが、何も起こりません。 –