私はTKinterを使ってフォルダのいくつかのイメージを表示しています。これらは、リストからロードされます。TKinterアップデートイメージリスト
image_list = [os.path.join("/home/pi/fotos/previews",fn) for fn in next(os.walk("/home/pi/fotos/previews"))[2]]
しかし、フォルダには、随時新しい写真を更新beeingてされているので、Tkinterには、同様にそれらの新しい画像を表示するために、何らかの形でリフレッシュする必要があります。
TKinterを新しい画像リストで更新するにはどうすればよいですか?助けのための
#!/usr/bin/python
import Image
import ImageTk
import Tkinter
import glob
import sys
import os.path
import os
image_list = [os.path.join("/home/pi/fotos/previews",fn) for fn in next(os.walk("/home/pi/fotos/previews"))[2]]
sorted_imagelist = sorted(image_list, key=str.swapcase, reverse=True)
current = 0
def move(delta):
global current, sorted_imagelist
if not (0 <= current - delta < len(sorted_imagelist)):
tkMessageBox.showinfo('End', 'No more image.')
return
current -= delta
image = Image.open(sorted_imagelist[current])
photo = ImageTk.PhotoImage(image)
label['image'] = photo
label.photo = photo
root = Tkinter.Tk()
root.configure(background="#eee")
label = Tkinter.Label(root, compound=Tkinter.TOP, bg="#eee")
label.pack()
label.place(x=90, y=30)
frame = Tkinter.Frame(root, bg="#eee")
frame.pack()
Tkinter.Button(frame, text='Refresh', height=10, width=25, command=root.update).pack(side=Tkinter.LEFT)
Tkinter.Button(frame, text='Previous picture', height=10, width=25, command=lambda: move(-1)).pack(side=Tkinter.LEFT)
Tkinter.Button(frame, text='Next picture', height=10, width=25, command=lambda: move(+1)).pack(side=Tkinter.LEFT)
Tkinter.Button(frame, text='Quit', height=10, width=25, command=root.quit).pack(side=Tkinter.LEFT)
move(0)
root.attributes('-fullscreen', True)
root.mainloop()
ありがとう:
はここで完全なコードです!
私はアイデアがありました。それはそれほど違っていませんでした。単に時折リストを再度ロードするだけです。あまりにも多くの画像があることはありませんので、その操作の速度は大丈夫です。しかし、私の質問は、新しいファイルを読み込む方法ではなく、TKinterを更新してシステムに新しいファイルを表示する方法でした。 –