tkinter禁用画布不工作

时间:2017-06-14 06:52:49

标签: python canvas tkinter

如何实际禁用Canvas小部件,而不仅仅是其中的任何对象,而是整个Canvas。

以下代码尝试在单击并更改其颜色后禁用Canvas。但你可以看到,它仍然可以点击黄色和黑色之间的黄色。

我希望在禁用之后,它不会响应任何事件,也许会变灰。

import tkinter as tk
w=tk.Tk()

color="yellow"

def flip(a):
    global color
    if color=="yellow": color="black"
    else: color="yellow"
    c.config(bg=color)
    c.config(state="disabled")          # does not work



c=tk.Canvas(w,width=20, height=20, bg=color)
c.place(x=30, y=30)
c.bind("<1>",flip)

1 个答案:

答案 0 :(得分:2)

我已经使用其他小部件进行了测试,并注意到将状态设置为禁用不会禁用绑定。在您的情况下,至少有两种解决方案:

  • 通过在<input type="text" value="&quot;<?= $st_data->sp_qty ?>&quot;"> 函数末尾的c.config(state="disabled")替换c.unbind('<1>')来删除绑定。

  • 在翻转颜色之前检查画布的状态 flip