为了特定的目的,我在Odoo15中运行tkinter库。
我已经创建了一个自定义python解释器来在odoo中运行python代码。为了处理用户输入,我专门设计了一个概念,并通过tkinter从用户那里获取输入。
在代码中,可能有多个输入,所以我需要打开窗口不止一次。例如,获取一个输入,输入,关闭窗口,然后重复相同的过程,直到最终用户输入。
因此,在某种情况下,我的服务器因运行时错误而终止:
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()
当有像value = the (“输入值”)这样的行时,我将用上面的代码替换该行,以接受用户输入。
期待着听到这个..。谢谢
发布于 2022-08-02 13:57:56
没有一个最小的可重复的例子,它更多的是一个猜测而不是一个答案。
但由于你的要求,我会尽我最大的努力。下面这一节的编码方式可能是至关重要的。
在代码中可能有多个输入,所以我需要打开窗口不止一次。例如,获取一个输入,输入,关闭窗口,然后重复相同的过程,直到最终用户输入。
如果销毁根窗口、tkinter.Tk()
实例并试图检索已销毁实例的用户输入(位于tkinter中的数据),则可能会遇到麻烦。不要创建tkinter.Tk
的新实例,而是使用tkinter.Toplevel
。您可以通过多种方式隐藏根窗口。即具有超直观性和透明性。
TL;博士
确保在整个会话中使用相同的tkinter.Tk()
实例,或者将新实例与服务器连接,反之亦然。
希望它能为你解决,特别是因为我不知道odoo
。
https://stackoverflow.com/questions/73194594
复制相似问题