Ausführen eines Tkinter-Formulars in einem separaten Thread
Ich habe ein kurzes Modul geschrieben, dass ein Bild übergeben werden kann und einfach ein Tkinter-Fenster erstellt und es anzeigt. Das Problem, das ich habe, ist, dass selbst wenn ich die Methode instanziiere und aufrufe, die das Bild in einem separaten Thread anzeigt, das Hauptprogramm nicht fortgesetzt wird, bis das Tkinter-Fenster geschlossen wird.
Hier ist mein Modul:
<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>
Es scheint gut zu funktionieren, außer wenn ich es von meinem Testprogramm wie dem folgenden aufrufe, wird es meinem Testprogramm nicht zu erlauben, fortzufahren, selbst wenn es in einem anderen Thread gestartet wird.
<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>
Ich denke, dass mein Problem vielleicht darin besteht, dass ich einen neuen Thread innerhalb des Moduls selbst erstellen sollte, aber ich wollte nur versuchen, es einfach zu halten, da ich neu in Python bin.
Trotzdem vielen Dank im Voraus für jede Hilfe.
Bearbeiten: Der Übersichtlichkeit halber versuche ich nur, ein Modul zu erstellen, das ein Bild in einem Tkinter-Fenster anzeigt, sodass ich dieses Modul jederzeit verwenden kann, wenn ich ein Bild anzeigen möchte. Das Problem, das ich habe, ist, dass jedes Mal, wenn ein Programm dieses Modul verwendet, es nicht fortgesetzt werden kann, bis das Tkinter-Fenster geschlossen wird.