标题加双引号是因为不是真正意义上跳出mainloop,而是用一种投机取巧的方式达到和mainloop相同的效果,但又可以执行后面的代码。
我本来是用kivy做了一个主界面,里面有个按钮是上传并裁剪图片的功能,这个裁剪界面win用tkinter做。
win=Toplevel()
win.title('裁剪图片')
这个界面需要持续监控鼠标的操作,使用win.mainloop()可以完美实现裁剪功能,但是退出裁剪界面后原来的主界面就会卡死。在网上查找资料,大部分文章都是说mainloop()后面的代码就是执行不了的,除非用多线程(我不会),又看到有人说用update()也可以实现对窗口的监控,但是只能更新1次。于是调用【winfo_exists()】函数,判断是否关闭当前窗口,关闭窗口后就跳出win.update()循环。
flag = 1
while flag: # 关闭窗口后退出循环
win.update()
if not win.winfo_exists():
flag = 0
经过测试,未关闭窗口时功能使用正常,关闭窗口后主界面就又可以动了。