如何在PySimpleGUI中禁用按钮的bind_return_key回车绑定?
报错原因
bind_return_key 是PySimpleGUI Button组件的初始化专属参数,仅支持在创建按钮时传入,update() 方法的官方参数列表从未包含该字段。此前可以正常使用属于旧版本未公开的临时特性,在版本迭代后被移除,因此会抛出TypeError: update() got an unexpected keyword argument 'bind_return_key'错误。
可行修复方案
方案1:直接删除冗余代码(最推荐,无需额外开发)
你现有代码中所有需要修改bind_return_key的场景,都已经先执行了window['b1'].update(disabled=True)将提交按钮禁用,此时即使回车绑定存在,也无法触发按钮点击事件,功能已经符合预期。
你只需要删除代码中以下3行冗余代码即可解决报错,功能完全不受影响:
# 部分正确逻辑里的这行 window['b1'].update(bind_return_key=False) # Skip逻辑里的这行 window['b1'].update(bind_return_key=True) # 答错逻辑里的这行 window['b1'].update(bind_return_key=False)
方案2:手动绑定/解绑回车事件(适用于需要动态控制的场景)
如果后续存在按钮未禁用,但需要临时取消/恢复回车绑定的需求,可以直接操作PySimpleGUI底层的tkinter对象实现:
禁用回车触发提交:
window.TKroot.unbind('<Return>')
恢复回车触发提交:
window.TKroot.bind('<Return>', lambda e: window.write_event_value('b1', '') if not window['b1'].Disabled else None)
内容的提问来源于stack exchange,提问作者Rick Sanchez
相关产品推荐
相关产品推荐

