Хорошо, у меня работает графический интерфейс в tkinter, и я пытаюсь захватывать и отображать изображение каждые 5 секунд и отображать его в метке с именем Picturelabel.
from Tkinter import *
from PIL import ImageGrab
import cStringIO, base64, time, threading
class PictureThread(threading.Thread):
def run(self):
print "test"
box = (0,0,500,500) #x,x,width,height
MyImage = ImageGrab.grab(box)
fp = cStringIO.StringIO()
MyImage.save(fp, 'GIF')
MyPhotoImage = PhotoImage(data=base64.encodestring(fp.getvalue()))
time.sleep(5)
PictureThread().run() #If I get rid of this then it just display one image
return MyPhotoImage
MyVeryNewImage = PictureThread().run()
Picturelabel = Label(BalanceFrame, image=MyVeryNewImage)
Picturelabel.grid(row=3, column=2, columnspan=3)
Picturelabel.image = MyVeryNewImage
window.mainloop()
Во-первых, как я могу очиститьэтого кода, так как запуск потока внутри другого потока не может быть хорошей практикой.
Также, когда я запускаю его, он печатает «test» в консоли, но не вызывает GUI.Если я закомментирую закомментированный текст (PictureThread (). Run (), где я создаю еще один поток внутри него.), Тогда он отображает первое изображение, но не больше.