문제

새 Button 객체를 생성했지만 command 생성 시 옵션.객체가 생성된 후 Tkinter에서 명령(onclick) 기능을 변경하는 방법이 있습니까?

도움이 되었습니까?

해결책

그렇지만 엘리 코트라이트의 프로그램은 잘 작동할 것입니다. 그러나 실제로 원하는 것은 인스턴스화할 때 설정할 수 있었던 속성을 인스턴스화 후에 재구성하는 방법일 뿐입니다².그렇게 하는 방법은configure() 메소드를 사용하는 것입니다.

from Tkinter import Tk, Button

def goodbye_world():
    print "Goodbye World!\nWait, I changed my mind!"
    button.configure(text = "Hello World!", command=hello_world)

def hello_world():
    print "Hello World!\nWait, I changed my mind!"
    button.configure(text = "Goodbye World!", command=goodbye_world)

root = Tk()
button = Button(root, text="Hello World!", command=hello_world)
button.pack()

root.mainloop()

¹ 마우스만 사용하는 경우 "괜찮습니다";탭 이동과 버튼의 [Space] 또는 [Enter] 사용에 관심이 있다면 키 누르기 이벤트도 구현해야 합니다(기존 코드 복제).설정 command 옵션을 통해 .configure 훨씬 쉽습니다.

² 인스턴스화 후에 변경할 수 없는 유일한 속성은 name.

다른 팁

확신하는;그냥 사용 bind 버튼이 생성된 후 콜백을 지정하는 메서드입니다.방금 아래 예제를 작성하고 테스트했습니다.이 작업에 대한 좋은 튜토리얼을 찾을 수 있습니다. http://www.pythonware.com/library/tkinter/introduction/events-and-bounds.htm

from Tkinter import Tk, Button

root = Tk()
button = Button(root, text="Click Me!")
button.pack()

def callback(event):
    print "Hello World!"

button.bind("<Button-1>", callback)
root.mainloop()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top