我正在尝试使用python打开谷歌搜索窗口,并且输入按钮触发器不起作用。 因此,如果您按下确认按钮,它应该打开窗口,但它不会。 我也使用tkinter for gui。 帮帮我:(谢谢 (我正在使用胜利10)
import tkinter as tk
def keyup():
opener()
def opener():
import webbrowser
text = name.get().strip()
query=str(text)
webbrowser.open("www.google.com/search?rlz=1C1CHZL_koUS766US766&ei=rDxSWtPFOeKt0gK4_YioDg&q="+query)
def clear():
name.delete(0, 'end')
root = tk.Tk()
ler=tk.Label(root, text = "what do you want to search?",font=("Helvetica", 40))
ler.pack()
name = tk.Entry(root,width=100)
name.pack()
widget=tk.Button(root, text = 'search', command =opener,width=30,height=3)
widget.pack()
widget.bind('<Enter>', opener)
wider=tk.Button(root, text = 'clear', command =clear,width=10,height=3)
wider.pack()
root.mainloop()
我该如何解决这个问题?
答案 0 :(得分:1)
你有几个错误
"Enter"
的是事件<Return>
。您也可以将<Return>
分配给root
,即使没有选择/关注按钮,它也能正常工作。
root.bind('<Return>', opener)
或分配给Entry
name.bind('<Return>', opener)
仅当"Enter"
重点关注时,和opener
才会运行Entry
。
command=
执行没有参数的函数,但bind()
使用一个参数执行函数,因此您必须使用带有默认值的参数定义函数,然后它将适用于两者。
def opener(event=None):
在网址中使用http://
,因为您可以使用file://
打开本地文件。在没有http://
的Linux链接上被视为本地文件。
更小的错误:将所有import
置于顶部以使代码更具可读性,Entry
返回字符串,因此您不需要str()
编辑:添加了name.bind('<Return>', opener)
import tkinter as tk
import webbrowser
def opener(event=None):
text = name.get().strip()
webbrowser.open("http://www.google.com/search?q="+text)
def clear():
name.delete(0, 'end')
root = tk.Tk()
ler=tk.Label(root, text="what do you want to search?", font=("Helvetica", 40))
ler.pack()
name = tk.Entry(root,width=100)
name.pack()
name.bind('<Return>', opener) # added
widget=tk.Button(root, text='search', command=opener, width=30, height=3)
widget.pack()
widget.bind('<Return>', opener)
wider = tk.Button(root, text='clear', command=clear, width=10, height=3)
wider.pack()
root.mainloop()
答案 1 :(得分:0)
使用Tk,事件绑定<Enter
用于描述光标移动到窗口小部件占用的空间(进入空间)。您希望使用的绑定是<Return>
,它映射到键盘上的返回(回车)键。
答案 2 :(得分:0)
我认为它应该是<Return>
而不是<Enter>
。此外,缩进似乎不正确。