TKinter.Tcl_AsyncDelete:找不到异步处理程序



我在Odoo15中运行tkinter库是为了特定的目的。

我创建了一个自定义的python解释器来在odoo中运行python代码。为了处理用户输入,我专门设计了一个概念,并通过tkinter从用户那里获取输入。

在一个代码中可能有多个输入,所以我需要多次打开窗口。例如,取一个输入,Entered,关闭窗口,然后重复相同的过程,直到最终用户输入。

因此,在这种情况下,在某个移动中,我的服务器因运行时错误而终止:

Tcl_AsyncDelete:找不到异步处理程序中止(堆芯转储(

有人能指导我如何解决这个问题吗?

import tkinter as tk
import gc
root=tk.Tk()
root.geometry('800x200+600+300')
name_var=tk.StringVar()
var_1 = ''
def submit():
name=name_var.get()
global %s
var_1 = name
root.destroy()
name_label = tk.Label(root, text = 'Enter value', font=('calibre',10, 'bold'))
name_entry = tk.Entry(root,textvariable = name_var, font=('calibre',10,'normal'))
sub_btn=tk.Button(root,text = 'Submit', command = submit)
name_label.grid(row=0,column=0)
name_entry.grid(row=0,column=1)
sub_btn.grid(row=2,column=1)
root.mainloop()

当存在线形值=输入("输入值"(时我将用上面的代码替换这一行,以接受用户输入。

期待听到这方面的消息。。感谢

如果没有一个最小的可复制示例,它更多的是猜测而不是答案。

但由于你的要求,我会尽力猜测。下面关于如何编写本节代码的信息可能至关重要。

在一个代码中可能有多个输入所以我需要打开窗户一次。例如取一个输入,进入,关闭窗口,然后重复直到最终用户输入。

如果销毁根窗口、tkinter.Tk()的实例,并且试图检索已销毁实例的用户输入(位于tkinter中的数据(,则可能会遇到麻烦。使用tkinter.Toplevel而不是创建tkinter.Tk的新实例。您可以通过多种方式隐藏根窗口。I.e具有直接性和透明度。

TL;DR

确保在整个会话中使用相同的tkinter.Tk()实例,或者将新实例与服务器连接,反之亦然。

希望它会为你工作,特别是因为我不知道odoo

相关内容

  • 没有找到相关文章

最新更新