如何通过复选框启用/禁用PySimpleGUI Graph的Button-1点击事件
解决PySimpleGUI中Graph点击事件的启用/禁用问题
要实现通过复选框控制Graph的Button-1点击事件,核心是使用Tkinter组件的unbind方法移除绑定的事件,同时避免重复绑定导致多次触发回调。
修改后的完整代码:
import PySimpleGUI as sg def handle_graph_click(event, your_variable): print(your_variable) GSIZE = (80, 50) graph = sg.Graph(GSIZE, (0, 0), GSIZE, key='-GRAPH-', background_color='#ffffff') layout = [[sg.Checkbox("启用Graph点击", key='s1')],[graph]] window = sg.Window("Graph Button", layout, use_default_focus=False, finalize=True, modal=True,no_titlebar=True) canvas = graph.Widget var = "12345" # 标记当前绑定状态,避免重复绑定 is_bound = False while True: event, values = window.read(timeout=500) if event == sg.WIN_CLOSED: break if values['s1']: if not is_bound: # 仅未绑定时执行绑定操作 canvas.bind("<Button-1>", lambda event: handle_graph_click(event, var)) is_bound = True else: if is_bound: # 移除Button-1的绑定事件,实现禁用 canvas.unbind("<Button-1>") is_bound = False window.close()
关键说明:
- 调用
canvas.unbind("<Button-1>")可直接移除之前绑定的点击事件,达到禁用效果。 - 新增
is_bound变量记录绑定状态,防止每次勾选复选框时重复绑定,避免点击一次触发多次回调的问题。 - 补充窗口关闭逻辑,保证程序能正常退出。
内容的提问来源于stack exchange,提问作者Kankan2000
相关产品推荐
相关产品推荐

