【问题标题】:Using destroy in tkinter the root disappear but the script keeps running在 tkinter 中使用 destroy 根消失但脚本继续运行
【发布时间】:2021-03-13 04:33:10
【问题描述】:

我编写了一个处理一些图像的脚本,最后它会询问您要将文件保存在哪里。我使用 tkinter 制作了它(下面的代码)。它工作正常,我唯一的问题是:

我有一个与函数destroy 链接的退出按钮,当我单击它时,root 已关闭,但脚本仍在运行,没有出现错误,我必须手动停止它。如果我使用quit,脚本正在停止,但根窗口冻结并且内核错误出现重新启动 python。我尝试在root.mainloop 之后使用sys.exit(),但脚本并没有退出循环。希望能帮到你,谢谢。

我正在使用 Spider、python 3.7.6、Ipython 7.19.0

root = Tk() 
root.geometry('200x150') 


  
# function to call when user press 
# the save button, a filedialog will 
# open and ask to save file 
def save(): 
    filename2 = filedialog.asksaveasfile(mode='wb+',defaultextension=".tif", title="Choose filename")
    if not filename2:
        return
    
    imwrite(filename2, stack, imagej=True)# 
    # root.destroy()

    
button_save = Button(root, text = 'Save', command = lambda : save()) 
button_save.grid(row=1,column=2) 
button_exit=Button(root,text='Exit program', command=root.destroy)
button_exit.grid(row=5,column=2) 


root.mainloop() 

【问题讨论】:

  • 这里没有问题,从 CLI/IntelliJ 运行。问题可能来自您的其余代码吗?在imwrite 通话中,stack 是什么?
  • 感谢您的回答。 stack 是表示 4D 图像(x、y、z 和波长)的数组。该代码原则上工作正常,它处理图像并以一种很好的方式保存它们。我在代码中做的是一个 bucle,我将数组的不同维度分开,生成掩码并取出它们的背景,然后将它们重新组合在一起。不知道可能是什么问题,因为没有出现错误:S。也许我的电脑里有一些奇怪的交互东西?
  • @OctaveL 已解决,我在下面回答。不知道具体为什么。谢谢

标签: python image image-processing tkinter destroy


【解决方案1】:

好的,我解决了,也许它可以帮助将来的人。

我定义了一个新的退出函数如下:

def _quit():
    root.quit()     
    root.destroy()
    
button_exit=Button(root,text='Exit program', command=_quit)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多