python如何关闭线程中的窗体_在单独的线程中运行Tkinter窗体

我写了一个简短的模块,可以传递一个图像,只需创建一个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还不熟悉。

不管怎样,提前谢谢你的帮助。

编辑:为了清楚起见,我只是想做一个模块,将在Tkinter窗口中显示一个图像,以便我可以使用这个模块,任何时候我想显示一个图像。我遇到的问题是,任何时候一个程序使用这个模块,它都无法恢复,直到Tkinter窗口关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值