|
发表于 2023-3-15 16:53:06
|
显示全部楼层
根据您提供的错误信息,看起来是与 Tkinter 的事件处理机制相关的问题。在事件处理函数中使用 all_tk.destroy() 可能会导致该窗口被关闭,而 Tkinter 同时也会尝试调用事件处理函数。这可能会导致在事件处理函数中对已销毁窗口的引用,从而导致 invalid command name 错误。
解决这个问题的方法是在事件处理函数中避免使用 destroy() 方法关闭主窗口。相反,您可以使用 withdraw() 方法隐藏窗口,然后在打开新窗口之后再关闭主窗口。以下是一个可能的解决方案:
- def doubleClick(event):
- global mody_data
- e = event.widget # 取得事件控件
- iid = e.identify("item", event.x, event.y) # 取得双击项目id
- mody_data = e.item(iid, "values") # 取得双击项目数据
- # print(mody_data)
- all_tk.withdraw() # 隐藏现有窗口
- revise(mody_data) # 新窗口
- all_tk.destroy() # 关闭现有窗口
复制代码
这个解决方案使用了 withdraw() 方法来隐藏主窗口,然后在打开新窗口之后再调用 destroy() 方法关闭主窗口。这应该可以避免出现上述错误。 |
|