我无法理解Tkinter中的一些find_text函数

时间:2018-07-25 18:51:20

标签: python tkinter

我开始阅读有关Tkinter的书

(Tkinter GUI应用程序开发蓝图)

当我开始在本书的帮助下创建文本编辑器时,我并没有真正理解其中的一部分。

有一项功能可以帮助您在文本中查找单词。

def find_text(event=None):
search_toplevel = Toplevel(root)
search_toplevel.title('Find Text')
search_toplevel.transient(root)
search_toplevel.resizable(False, False)
Label(search_toplevel, text="Find All:").grid(row=0, column=0, sticky='e')
search_entry_widget = Entry(
    search_toplevel, width=25)
search_entry_widget.grid(row=0, column=1, padx=2, pady=2, sticky='we')
search_entry_widget.focus_set()
ignore_case_value = IntVar()
Checkbutton(search_toplevel, text='Ignore Case', variable=ignore_case_value).grid(
    row=1, column=1, sticky='e', padx=2, pady=2)
Button(search_toplevel, text="Find All", underline=0,
       command=lambda: search_output(
           search_entry_widget.get(), ignore_case_value.get(),
           content_text, search_toplevel, search_entry_widget)
       ).grid(row=0, column=2, sticky='e' + 'w', padx=2, pady=2)

对于我们来说很难创建按钮的行。我发现lambda函数和普通函数一样,但是是以其他方式创建的,但是其他stufffff确实很困难。能否请您解释一下这段代码的实际作用? (按钮代码)

完整代码:

https://github.com/PacktPublishing/Tkinter-GUI-Application-Development-Blueprints-Second-Edition/blob/master/Chapter%2002/2.05.py

1 个答案:

答案 0 :(得分:0)

也许可以帮助您将其写为正常功能。这段代码同样适用:

def find_clicked():
    search_output(
        search_entry_widget.get(), ignore_case_value.get(),
        content_text, search_toplevel, search_entry_widget)

Button(search_toplevel, text="Find All", underline=0,
       command=find_clicked).grid(row=0, column=2, sticky='e' + 'w', padx=2, pady=2)

lambda唯一适合的事情是将东西塞到一行上,从而使人们感到困惑。我建议您尽可能避免使用lambda。