Tkinter中按钮绑定回车键无响应问题咨询
解决Tkinter按钮绑定回车键无效的问题
你的问题核心出在回车键绑定的代码逻辑上,具体有两个问题:
submit_btn.bind('<Return>', show_frame(frame))这行代码会立刻执行show_frame(frame),而不是把它作为回调函数留给回车键触发时调用。- Tkinter的绑定回调函数默认会接收一个
event参数,你的show_frame函数没有处理这个参数,即使绑定方式正确也会报错。
修改方案
方案1:用lambda包装回调,兼容event参数
直接修改绑定代码,用lambda把show_frame(frame)包装起来,同时接收event参数:
submit_btn.bind('<Return>', lambda event: show_frame(frame))
方案2:调整show_frame函数,支持event参数
如果需要更通用的写法,可以修改函数本身,让它可选接收event参数:
# 调整后的函数,event参数设为默认None def show_frame(frame, event=None): frame.tkraise() # 绑定方式可以简化为(不用lambda也能行) submit_btn.bind('<Return>', lambda: show_frame(frame))
额外提示
Tkinter的按钮默认支持回车键触发(当按钮获得焦点时),如果只是想让按钮响应回车,也可以不用额外绑定,只需给按钮设置焦点:
submit_btn.focus()
内容的提问来源于stack exchange,提问作者Zarhmon
相关产品推荐
相关产品推荐

