我正在制作一个图像处理类,用于介绍CS课程,使用PIL进行图像处理,使用Tkinter进行图片处理。为了让用户能够在操作时看到图片,我使用类似于this question的代码在单独的线程上运行图形操作。这似乎是有效的(即没有崩溃),但我无法显示图像 - Tk正在启动,但没有窗口出现。代码如下所示:
self.root = Tk.Toplevel()
self.frame = tk.Frame(self.root, width=self.image.size[0], height=self.image.size[1])
img = ImageTk.PhotoImage(self.image)
self.label = tk.Label(self.frame, image=img)
self.label.image = img
self.label.pack()
self.frame.pack()
tick()
self.root.mainloop()
tick
功能类似于链接问题中的功能。我怀疑我的问题是由于对Tkinter的误解,但我真的不知道。
另外,我似乎无法让程序很好地退出 - 即使我在构造运行它的daemon=True
时设置Thread
,我仍然必须点击{{ 1}}当我完成。这看起来有点难看,而且我宁愿不用虚假的错误信息打扰学生。
编辑:这是更多代码。
C-c