Python 通过事件设置时,凹陷值不稳定地工作

Python 通过事件设置时,凹陷值不稳定地工作,python,tkinter,Python,Tkinter,当我手工编写按钮并传递它们的一个实例时,一切都按预期工作,但我是通过编程创建它们的,relief=value它的值工作不稳定 from tkinter import * def eventHandler(event): wg = event.widget if str(wg) == '.': pass else: # Get the Widget's Attributes print('name:',

当我手工编写按钮并传递它们的一个实例时,一切都按预期工作,但我是通过编程创建它们的,relief=value它的值工作不稳定

from tkinter import *  

def eventHandler(event):  
    wg = event.widget  
    if str(wg) == '.':  
        pass  
    else:
        # Get the Widget's Attributes
        print('name:', wg, 'state:', wg['state'])
        # Set the Widget's Attributes.
        wg.configure(state = DISABLED, bg = '#B29700', fg = '#EFCC90',
                        relief = SUNKEN)
        print('name:', wg, '| relief:', wg['relief'],'| state:', wg['state'])

win = Tk()
win.configure(bg = 'black')
win.geometry('200x200+500+50')
lb_Header = Label(win, text = 'Testing', fg = 'red', bg = 'black',
                        font = ('Arial Bold',20), pady = 5)
lb_Header.pack()

alpha = ['a', 'b']
for n in range(0,2):
    btn = Button(win, text = alpha[n], font = ('Arial Bold', 14), bg = 'gold',
                 fg = 'black', width = 2)
    btn.pack()

win.bind("<Button-1>", eventHandler)
win.mainloop()
您会注意到,当第二次单击按钮时,不仅它看起来没有凹陷,而且它还报告relief:raised

由于很多时候我必须以编程方式创建小部件——不仅因为它更方便,而且因为它们的数量可能会有所不同——我需要通过事件访问小部件的属性。
有人知道为什么会出现上述意外结果,以及我如何解决这种不稳定的行为吗?

您应该绑定
,而不是
。代码示例的缩进需要修复。@Bryan Oakley感谢您让我知道缩进的疏忽。在我的模块中,问题是将其添加到帖子中,我刚刚修复了它。@acw1668-非常感谢!你的回答很有魅力!您知道该属性在发布时工作而不是单击时工作的原因吗?如果使用
,则在按下鼠标按钮时将调用回调。您可以在按下鼠标按钮期间更改按钮的状态。释放鼠标按钮时,按钮将恢复为提升状态。我希望你能理解我说的话,因为英语不是我的母语。
        # Set the Widget's Attributes.
        if wg['state'] == 'disabled':
            wg.bell()
        else:
            wg.configure(state = DISABLED, bg = '#B29700', fg = '#EFCC90',
                            relief = SUNKEN)
            print('name:', wg, '| relief:', wg['relief'],'| state:', wg['state'])