2014-02-24 26 views
2

下午好!为什么我必须双击才能更改我的按钮对象的浮雕? (tkinter)

为什么我必须双击才能更改我的按钮对象的浮雕?

在我的方法结合,我的第一个参数是扣1,我不明白...

这里是我的代码,谢谢提前。

from tkinter import * 

def sunken(event): 
    button = event.widget # détecte le bouton sur lequel on clique 
    button['relief'] = 'sunken' # changement de relief 

root = Tk() 

for i in range(8): 
    for j in range(8): 
     myButton = Button(root, text='', relief='raised') 
     myButton.grid(row=i, column=j) 
     myButton.bind("<Button-1>", sunken) 

root.mainloop() 

Python 3.x都有

我,我的英语道歉,我是法国人...

+3

我不认为我应该把这个作为答案,因为我不确定,但也许它与这样一个事实有关,即当单击Button时,它的'relief'将被'tkinter'自动更改为'SUNKEN',然后再次恢复正常。我还注意到,你不需要点击两次,但如果两次点击同一个按钮的时间超过10秒,它就不会下沉。这导致我相信在这个时间框架中两个'relief'配置是相冲突的。 –

+0

我同意,这是关于按钮的默认行为。如果使用输入字段替换按钮,则按预期工作。你可能会认为一个按钮默认绑定到一个左键事件,所以使用一个命令来回调你的按钮内的函数可能会很好地为你服务,比如Button(root,text ='',command = sunken) 。当然,你需要改变生成按钮的方式,或者想出一些其他解决方法来将想要更改的按钮传递给该函数。祝你好运! – atlasologist

+0

@亚历克斯,谢谢你,你把这个bug放在我耳边,我发布了很好的回应 – Fred

回答

1

我的问题的响应

from tkinter import * 

def sunken(event): 
    button = event.widget # detecte le bouton sur lequel on clique 
    button['relief'] = 'sunken' # changement de relief 

root = Tk() 

for i in range(8): 
    for j in range(8): 
     myButton = Button(root, text='', state='disabled') 
     myButton.grid(row=i, column=j) 
     myButton.bind("<Button-1>", sunken) 

root.mainloop() 
+0

这是问题的答案吗?我不明白。你是说禁用按钮可以解决你的问题吗? –

+0

@Bryan,是的,我应该澄清我的按钮是禁用。默认情况下,我的按钮是正常的,它的工作原理... – Fred

+0

@Bryan,当我的按钮被禁用时,我认为唯一的事件被考虑在内。 – Fred

相关问题