完全不熟悉Python,所以我怀疑我犯了一个非常愚蠢的语法错误。
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方法。我使用partial来传递函数中的关键字。但是,关键字未打印到控制台。
答案 0 :(得分:2)
get_search_results_partial = partial(get_search_results, toolbar_search_field.get())
立即调用toolbar_search_field.get()
(可能是一个空字符串),然后将其传递给partial。现在get_search_results_partial
是一个零参数的函数,只调用get_search_results('')
。它与工具栏没有任何关联。
正如评论中所建议的,只需这样做:
Button(toolbar, text="Search", command=lambda: get_search_results(toolbar_search_field.get()))