Tkinter(python)禁用按钮调用方法

时间:2014-06-03 13:17:37

标签: python button tkinter

我有基于Tkinter的这样的python脚本:

#!/usr/bin/env python
#-*-coding:utf-8-*- 
import ttk
from Tkinter import *
root = ttk.Tkinter.Tk()
root.geometry("%dx%d+0+0" % (1280, 800))
root.title(u'СКЗ Аналитик')
def pre(event):
    print 'Something'
button3=Button(root,state =    DISABLED,text='Test',width=10,height=1,fg='black',font='arial  8')
button3.place(x = 1200, y = 365)
button3.bind('<Button-1>', pre)
root.mainloop()

正如你所看到的那样,按钮被禁用但功能'pre'可以按下我禁用的按钮。视觉效果已禁用但是......任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

按钮的DISABLED字段仅控制按钮的内置回调。如果你单独制作&#34;手工制作&#34;你自己绑定,按钮的状态不会影响它。

以下是如何使禁用功能按预期工作:

button3=Button(root, command = pre, state =    DISABLED,text='Test',width=10,height=1,fg='black',font='arial  8')
#                    ^^^^^^^^^^^^^ use the built-in command field for the button.
button3.place(x = 1200, y = 365)

答案 1 :(得分:0)

您已禁用按钮,但它没有取消绑定该功能。您需要取消绑定与该按钮关联的功能。

您需要添加button3.unbind('<Button-1>')这一行。

您可以像这样更新代码:

import ttk
from Tkinter import *
root = ttk.Tkinter.Tk()
root.geometry("%dx%d+0+0" % (1280, 800))
root.title(u'СКЗ Аналитик')
def pre(event):
    print 'Something'
button3=Button(root,state =    DISABLED,text='Test',width=10,height=1,fg='black',font='arial  8')
button3.place(x = 1200, y = 365)
button3.bind('<Button-1>', pre) 
button3.unbind('<Button-1>') #updated line
root.mainloop()