Python Tkinter:如何充分结合键盘提示和可点击按钮?

时间:2015-12-07 23:54:23

标签: python python-3.x tkinter

Hello Stack社区,

当我尝试编写一个简单的谷歌搜索栏GUI应用程序时,我似乎在可点击的GUI按钮或工作键盘命令之间进行了权衡。 这取决于通过自我'进入名为' google'的功能。没有' self' GUI Submit按钮将起作用,Enter键将在控制台中引发错误。随着自我'传入谷歌,Enter键将工作,但GUI提交按钮引发相反的错误。它与传递给此函数的参数数量有关' google'。

有没有办法让提交按钮和Enter键都有效?

在此示例中,GUI Submit按钮有效,Enter键将显示错误:

cb2

2 个答案:

答案 0 :(得分:2)

失败的原因是Tkinter回调函数传递了一个事件参数。所以你传递的任何回调都必须有这个论点。添加参数会为绑定修复它,但会为提交打破它。

这是因为对于提交没有参数传递,你的函数现在需要一个参数。所以基本上它意味着你不能为这两个目的使用相同的功能。

绕过这个的一个简单方法是在bind调用中使用lambda。

root.bind("<Return>", lambda e: google())

答案 1 :(得分:2)

为没有任何内容传递给函数的时间添加默认值。因为你不使用它并不重要。

def google(event=None): 
    print("google function called")
##    url = "https://www.google.nl/#q=" + search.get()
##    webbrowser.open_new_tab(url)

#GUI
root = Tk()
search = StringVar()
ttk.Entry(root, textvariable=search).grid()
submit = ttk.Button(root, text="Search", command=google).grid()
root.bind("<Return>", google)
root.mainloop()