You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter按键绑定问题:点击NO后无法再次触发退出确认流程

问题分析与解决

问题出在按下NO按键后,只解绑了stop函数,但没有将<Key>事件重新绑定回menuKeys函数。

初始状态下,你给<Key>事件绑定的是menuKeys,触发退出按键后,你把绑定换成了stop。当用户按下NO时,你执行win.unbind("<Key>", stop)解绑了stop,但此时<Key>事件没有绑定任何处理函数,后续再按退出按键根本不会触发menuKeys的逻辑,自然无法重新唤起退出确认流程。

修复代码

修改stop函数的elif分支,在解绑stop后重新绑定menuKeys:

def stop(event):
    if event.keysym == settings["keys"]["prompt-keys"]["yes"]:
        win.destroy()
    elif event.keysym == settings["keys"]["prompt-keys"]["no"]:
        x,y = blockPoint("center")
        x -= 6
        y -= 3
        for i in range(5):
            for j in range(10):
                Spot(x+j,y,color="#232627",outline="#232627")
            y += 1
        win.unbind("<Key>", stop)
        # 重新绑定回menuKeys,恢复初始按键处理逻辑
        win.bind("<Key>", menuKeys)
    else:
        win.bind("<Key>", stop)

额外说明:Tkinter中unbind如果只传事件类型会解绑该事件的所有绑定,你这里用win.unbind("<Key>", stop)的写法是正确的,只要是同一个函数对象就能精准解绑。

内容的提问来源于stack exchange,提问作者Felix508

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:37:08