Ejecutando un formulario Tkinter en un hilo separado

He escrito un módulo corto al que se puede pasar una imagen y simplemente crea una ventana Tkinter y la muestra. El problema que tengo es que incluso cuando instalo y llamo al método que muestra la imagen en un hilo separado, el programa principal no continuará hasta que se cierre la ventana de Tkinter.

Aquí está mi módulo:

<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>

Parece que funciona bien, excepto cuando lo llamo desde mi programa de prueba como el que se muestra a continuación, no parece permitir que mi programa de prueba continúe, incluso cuando se inicia en un hilo diferente.

<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>

Creo que tal vez mi problema sea que debería estar creando un nuevo hilo dentro del propio módulo, pero quería simplemente intentarlo y mantenerlo simple, ya que soy nuevo en Python.

De todos modos, gracias de antemano por cualquier ayuda.

editar: Para mayor claridad, solo estoy tratando de hacer un módulo que muestre una imagen en una ventana de Tkinter, de modo que pueda usar este módulo cada vez que quiera mostrar una imagen. El problema que tengo es que cada vez que un programa utiliza este módulo, no puede reanudarse hasta que se cierre la ventana de Tkinter.

Respuestas a la pregunta(4)

Su respuesta a la pregunta