2014-02-24 2 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() 

은 내 영어에 대해 사과

, 나는 프랑스어 해요 파이썬 3.x를 ...

+3

내가해야한다고 생각하지 않습니다 이 질문에 대한 대답은 확실하지 않지만 아마도'Button '을 클릭하면'relief '가'tkinter '에 의해 자동으로'SUNKEN '으로 변경된 다음 다시 정상 상태로 돌아 오는 것과 관련이 있습니다. 두 번 클릭 할 필요가 없지만 같은 버튼에서 두 번 클릭하는 것이 10 초 이상 차이가 나는 경우 싱크하지 않습니다. 이것은 내가 두 개의 '릴리프'설정이이 시간대에 충돌하고 있다고 믿게한다. –

+0

동의합니다. 버튼의 기본 동작에 대한 내용입니다. 입력 필드로 단추를 바꾸면 예상대로 작동합니다. 기본적으로 버튼은 왼쪽 클릭 이벤트에 바인딩되어 있다고 생각할 수 있습니다. 버튼 내에서 함수를 콜백하기위한 명령을 사용하면 Button (root, text = '', command = sunken) . 물론, 단추를 생성하는 방법을 변경하거나 기능을 변경하려는 단추를 전달하기 위해 다른 작업을해야합니다. 행운을 빕니다! – atlasologist

+0

@Alex, 감사합니다. 내 귀에 버그를 넣었습니다. 좋은 응답을 게시하고 있습니다. – 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, 예, 버튼을 사용할 수 없다는 것을 분명히해야합니다. 내 단추에 대한 기본값은 NORMAL이며 작동합니다 ... – Fred

+0

@Bryan, 내 단추가 비활성화되어있는 경우 유일한 이벤트가 고려됩니다. – Fred

관련 문제