2015-05-01 4 views
0

Код ниже работает, но если я делаю поток бесконечным циклом (раскомментируя строку i = False), окно больше не отображается. Что мне не хватает?
Моя цель - постоянно обновлять изображение, пока оно отображается.Невозможно запустить бесконечный поток с помощью Tkinter

from PIL import Image,ImageTk 
from tkinter import Tk,Canvas,NW,mainloop 
import threading 
from time import sleep 
from random import randint 
imgx = 512; imgy = 512 


def mi_thread(): 
    global pix 
    i=True 
    while i: 
    #i=False 
    for k in range(imgy): 
     pix[k,k]=(randint(0,255),randint(0,255),randint(0,255)) 
    sleep(1) 

window = Tk() 
canvas = Canvas(window, width = imgx, height = imgy, bg = "#000000");canvas.pack() 
img2 = Image.new("RGB", (imgx, imgy))  

pix = img2.load() 
t= threading.Thread(target=mi_thread()) 
t.start() 
imgx =ImageTk.PhotoImage(img2) 
canvas.create_image((0, 0), image = imgx, state = "normal", anchor = NW) 

mainloop() 

ответ

2

В threading.Thread(target=mi_thread()) вы фактически используете свою функцию. Вам нужно удалить круглые скобки и передать только ссылку на функцию. т.е.:

threading.Thread(target = mi_thread)