2017-03-18 4 views
1

파이썬에 완전히 익숙하지 않아서, 나는 매우 어리석은 구문 오류를 범하고있다.인수가 부분적으로 전달되지 않음

from tkinter import * 
from functools import partial 

def get_search_results(keyword): 
    print("Searching for: ", keyword) 

def main(): 
    # ***** Toolbar ***** 
    toolbar = Frame(main_window) 
    toolbar.pack(fill=X) 

    toolbar_search_field = Entry(toolbar) 
    toolbar_search_field.grid(row=0, columnspan=4, column=0) 
    get_search_results_partial = partial(get_search_results, toolbar_search_field.get()) 
    toolbar_search_button = Button(toolbar, text="Search", command=get_search_results_partial) 
    toolbar_search_button.grid(row=0, column=5) 

main_window = Tk() 
main() 
main_window.mainloop() # continuously show the window 

기본적으로이 코드는 검색 창이있는 창을 만듭니다. 검색 창에 무언가를 입력하고 버튼을 누르면 get_search_results 메소드가 호출됩니다. 부분 함수를 사용하여 함수에서 키워드를 전달하고 있습니다. 그러나 키워드가 콘솔에 인쇄되지 않습니다.

+1

나는 당신이 원하는 것은 더'람다 같은 의심 : get_search_results (toolbar_search_field.get())'. 부분은 여전히 ​​생성 된 지점에서 값을 가져옵니다. – jonrsharpe

+0

[Tkinter Entry의 get 함수가 아무 것도 반환하지 않는 이유는 무엇입니까?] (http://stackoverflow.com/questions/10727131/why-is-tkinter-entrys-get-function-returning-nothing) –

답변

2
get_search_results_partial = partial(get_search_results, toolbar_search_field.get()) 

이 즉시 toolbar_search_field.get()를 호출 (아마도 빈 문자열을 받고) 다음 부분에 전달합니다. 이제 get_search_results_partial은 0을 갖는 함수로 get_search_results('')을 호출합니다. 툴바에 연결되어 있지 않습니다. 코멘트에 제안으로

, 그냥 이렇게 :

Button(toolbar, text="Search", command=lambda: get_search_results(toolbar_search_field.get())) 
+0

완전하지 않습니다. 람다가 어떻게 작동하는지 이해하지만,이 작품은 너무 감사합니다! –