Запуск формы Tkinter в отдельном потокеPython

Программы на Python
Anonymous
Запуск формы Tkinter в отдельном потоке

Сообщение Anonymous »

Я написал короткий модуль, которому можно передать изображение, который просто создает окно Tkinter и отображает его. Проблема, с которой я столкнулся, заключается в том, что даже когда я создаю экземпляр и вызываю метод, отображающий изображение в отдельном потоке, основная программа не продолжит работу, пока окно Tkinter не будет закрыто.

Вот мой модуль:

Код: Выделить всё

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()
Кажется, он работает нормально, за исключением того, что когда я вызываю его из своей тестовой программы, как показано ниже, кажется, что моя тестовая программа не может продолжать работу, даже когда она запущена в другой теме.

Код: Выделить всё

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..."
Я думаю, что, возможно, моя проблема в том, что мне следует создать новый поток внутри самого модуля, но я хотел просто попытаться сохранить его простым, как и я новичок в Python.

В любом случае, заранее благодарю за любую помощь.

edit: Для ясности, я просто пытаюсь создать модуль, который будет отображать изображение в окне Tkinter, чтобы я мог использовать этот модуль в любое время, когда захочу отобразить изображение. Проблема, с которой я столкнулся, заключается в том, что каждый раз, когда программа использует этот модуль, она не может возобновить работу, пока не закроется окно Tkinter.

Подробнее здесь: https://stackoverflow.com/questions/105 ... ate-thread

Вернуться в «Python»