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

如何通过复选框启用/禁用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 07:07:17