对 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 方法被调用。我在函数中传递关键字,使用部分。但是,关键字没有打印到控制台。
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()))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句