鱼C论坛

 找回密码
 立即注册
查看: 2410|回复: 5

通过双击事件,弹出一个新窗口,关闭原窗口后报错

[复制链接]
发表于 2023-3-15 16:50:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想通过双击事件,打开一个窗口,显示双击的数据详细信息。
同时关闭原来的窗口,
以下命令不关闭原来窗口,是不会报错,
添加了all_tk.destroy(),关闭原来窗口就报错。

请教下高手,是什么原因?
有没有解决方法,

命令如下:
    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)
        revise(mody_data)      # 新窗口
        all_tk.destroy()          # 关闭现有窗口



报错信息如下:
invalid command name ".!treeview"
    while executing
"$w identify row $x $y"
    (procedure "ttk::treeview::DoubleClick" line 2)
    invoked from within
"ttk::treeview::DoubleClick .!treeview 450 381 "
    (command bound to event)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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() 方法关闭主窗口。这应该可以避免出现上述错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-15 17:36:25 | 显示全部楼层
isdkz 发表于 2023-3-15 16:53
根据您提供的错误信息,看起来是与 Tkinter 的事件处理机制相关的问题。在事件处理函数中使用 all_tk.destr ...

刚刚测试了下,还是会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-15 18:41:36 | 显示全部楼层
pysunred 发表于 2023-3-15 17:36
刚刚测试了下,还是会报错

try except
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-16 10:37:38 | 显示全部楼层

怎么做?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-16 16:42:03 | 显示全部楼层
try:
    #代码
except:
    # 如果报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 07:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表