2017-10-03 1 views
0

그래서 for 루프를 사용하여 Tkinter에서 내 버튼에 기능을 제공하고 싶습니다. 내가 이것을 할 때, 나는 그 버튼들이 정의하지 않은 오류 메시지를 얻는다. 나는 여러 가지 일을 시도했지만 어쨌든 일하지 않았습니다. 네가 나를 도울 수 있다면 나는 행복 할 것이다. 그건 그렇고 계산기예요.for 루프를 사용하여 버튼에 기능을 부여하려면 어떻게합니까?

for s in range(0, 10): 
    def add_(s): 
     entry_box.insert(1000, str(number)) 

그리고 이것은 내가 버튼을 만든 방법은 다음과 같습니다 : 버튼이 아닌 당신이 당신의 명령 인수를 제공 한 정보를 바탕으로

button_zero = Button(main_window, text='0', padx=30, pady=25, command=add_0) 
button_zero.place(x=67,y=430) 

답변

0

을 루프처럼 보이는 방법

입니다 정의 된 함수와 동일합니다. 어쩌면 그냥 오타가 : 모든 entry_box에 번호를 삽입 할 것을 10 개 버튼 (0-9)가있는 경우

for s in range(0,10): 
    def add_0(s): 
     entry_box.insert(1000,str(number)) 
1

, 나는 함수 공장을 만들 것입니다. 당신이 add_(2)를 호출 할 때

def add_(s): 
    def wrapped(): 
     entry_box.insert(1000, s) 
    return wrapped 

, 당신은 반환로 호출시 입력 상자에 2를 추가하는 기능을 얻는다.

add_2 = add_("2") 
add_2() # adds 2 to the entry box, returns None 

그런 다음 버튼을 반복하고 각각에 명령을 할당 할 수 있습니다.

for i, button in enumerate([button_zero, button_one, button_two, ...]): 
    button.configure(command=add_(str(i))) 
+0

파이썬에 이미 포함되어있는 기능을 사용할 수있게되면 왜 함수 팩터 리를 만드나요? : functools.partial'. – Novel

+0

@Novel 개인적 취향이 대부분. 'functools.partial'은 프로그래머의 시간을 많이 절약 해주지는 않지만,'functools'를 임포트해야한다는 것을 의미합니다! YMMV, 그것은 실제로 최종 코드에 전혀 영향을 미치지 않습니다. –