Запуск формы Tkinter в отдельном потоке
Я написал короткий модуль, которому можно передать изображение, и просто создает окно Tkinter и отображает его. Проблема, с которой я сталкиваюсь, заключается в том, что даже когда я создаю экземпляр и вызываю метод, который отображает изображение в отдельном потоке, основная программа не продолжит работу, пока окно Tkinter не будет закрыто.
Вот мой модуль:
<code>import Image, ImageTk import Tkinter class Viewer(Tkinter.Tk): def __init__(self,parent): Tkinter.Tk.__init__(self,parent) self.parent = parent self.initialize() def initialize(self): self.grid() def show(self,img): self.to_display = ImageTk.PhotoImage(img) self.label_image = Tkinter.Label(self,image=self.to_display) self.label_image.grid(column = 0, row = 0, sticky = "NSEW") self.mainloop() </code>
Кажется, что он работает нормально, за исключением того, что когда я вызываю его из моей тестовой программы, подобной той, что приведена ниже, она, похоже, не позволяет продолжить выполнение моей тестовой программы, даже если она запущена в другом потоке.
<code>import Image from viewer import Viewer import threading def showimage(im): view = Viewer(None) view.show(im) if __name__ == "__main__": im = Image.open("gaben.jpg") t = threading.Thread(showimage(im)) t.start() print "Program keeps going..." </code>
Я думаю, что, возможно, моя проблема в том, что я должен создать новый поток внутри самого модуля, но я хотел просто попытаться сделать его простым, так как я новичок в Python.
В любом случае, заранее спасибо за любую помощь.
редактировать: для ясности, я просто пытаюсь создать модуль, который будет отображать изображение в окне Tkinter, чтобы я мог использовать этот модуль в любое время, когда я хочу отобразить изображение. Проблема, с которой я сталкиваюсь, заключается в том, что когда программа использует этот модуль, она не может возобновить работу, пока окно Tkinter не закроется.