Ho scritto un modulo breve che può essere passato a un'immagine e crea semplicemente una finestra di Tkinter e la visualizza. Il problema che sto avendo è che anche quando istanzio e chiamo il metodo che visualizza l'immagine in un thread separato, il programma principale non continuerà fino a quando la finestra di Tkinter non verrà chiusa.Esecuzione di un modulo Tkinter in una filettatura separata
Ecco il mio modulo:
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()
Sembra funzionare bene, tranne quando chiamo dal mio programma di test come quella qui sotto, non sembrerà a permettere che il mio programma di test per continuare, anche quando iniziato in un thread diverso.
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..."
penso che forse il mio problema è che dovrei essere la creazione di un nuovo thread all'interno del modulo stesso, ma mi è stato che vogliono provare giusto e mantenerlo semplice, come io sono nuovo a Python.
In ogni caso, grazie in anticipo per qualsiasi tipo di assistenza.
modifica: Per maggiore chiarezza, sto solo provando a creare un modulo che visualizzerà un'immagine in una finestra di Tkinter, in modo che possa utilizzare questo modulo ogni volta che voglio visualizzare un'immagine. Il problema che sto avendo è che ogni volta che un programma usa questo modulo, non può riprendere finché la finestra di Tkinter non viene chiusa.
La prima parte della risposta è buona, ma non posso andare avanti a causa del consiglio di provare altri toolkit. Tkinter è perfettamente adatto al tipo di cosa di cui tratta questa domanda. –