Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 输入按钮没有';t触发器_Python 3.x_Tkinter - Fatal编程技术网

Python 3.x 输入按钮没有';t触发器

Python 3.x 输入按钮没有';t触发器,python-3.x,tkinter,Python 3.x,Tkinter,我试图用python打开一个google搜索窗口,但enter按钮触发器不起作用。 因此,如果你按下回车按钮,它应该会打开窗口,但它不会。 我还使用tkinter for gui。 帮帮我:(谢谢 (我正在使用win 10) 将tkinter作为tk导入 def keyup(): 开场白() def开启器(): 导入网络浏览器 text=name.get().strip() query=str(文本) webbrowser.open(“www.google.com/search?rlz=1cch

我试图用python打开一个google搜索窗口,但enter按钮触发器不起作用。 因此,如果你按下回车按钮,它应该会打开窗口,但它不会。 我还使用tkinter for gui。 帮帮我:(谢谢 (我正在使用win 10)

将tkinter作为tk导入
def keyup():
开场白()
def开启器():
导入网络浏览器
text=name.get().strip()
query=str(文本)
webbrowser.open(“www.google.com/search?rlz=1cchzl_koUS766US766&ei=rDxSWtPFOeKt0gK4_YioDg&q=“+query”)
def clear():
名称。删除(0,“结束”)
root=tk.tk()
ler=tk.Label(root,text=“您想搜索什么?”,font=(“Helvetica”,40))
ler.pack()
name=tk.Entry(根,宽度=100)
name.pack()
widget=tk.Button(根,文本=search,命令=opener,宽度=30,高度=3)
widget.pack()
widget.bind(“”,opener)
加宽=tk.按钮(根,文本=清除,命令=清除,宽度=10,高度=3)
更宽的包()
root.mainloop()

如何修复此问题?

使用Tk,事件绑定
我认为应该是
而不是
。此外,缩进似乎不正确。

您几乎没有错误

  • 对于键
    “Enter”
    是事件
    。您还可以将
    分配给
    根目录
    ,即使未选择/聚焦按钮,它也可以工作

    root.bind('<Return>', opener)
    
    “Enter”
    仅当
    Entry
    处于焦点时才会运行
    opener


  • command=
    执行不带参数的函数,但
    bind()
    使用一个参数执行函数,因此您必须使用具有默认值的参数定义函数,然后它将同时使用这两个参数

    def opener(event=None):
    
  • 在url中使用
    http://
    ,因为您可以使用
    file://
    打开本地文件。在Linux上,不使用
    http://
    的链接被视为本地文件

  • 较小的错误:将所有
    import
    放在顶部,使代码更可读,
    Entry
    返回字符串,这样您就不需要
    str()


    编辑:添加了
    name.bind(“”,opener)

    将tkinter作为tk导入
    导入网络浏览器
    def开启器(事件=无):
    text=name.get().strip()
    网络浏览器打开(“http://www.google.com/search?q=“+文本)
    def clear():
    名称。删除(0,“结束”)
    root=tk.tk()
    ler=tk.Label(root,text=“您想搜索什么?”,font=(“Helvetica”,40))
    ler.pack()
    name=tk.Entry(根,宽度=100)
    name.pack()
    名称.绑定('',开启器)#添加
    widget=tk.Button(root,text='search',command=opener,width=30,height=3)
    widget.pack()
    widget.bind(“”,opener)
    加宽=tk.按钮(root,text='clear',command=clear,width=10,height=3)
    更宽的包()
    root.mainloop()
    
    您的代码缩进错误-因此我们无法测试它在console/terminal/cmd.exe中运行时是否收到错误消息?始终将完整的错误消息(回溯)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。
    表示
    鼠标悬停小部件
    ,而不是键盘上的“回车”键。对于“回车”键有
    命令=
    执行函数时不带参数,但
    绑定()
    只带一个参数执行-因此
    开启器
    必须获得一个带默认值的参数才能同时使用-即
    定义开启器(事件=无):
    @iwasnother文本“不工作”是无用的信息(以及StackOverflow上最具注释性的文本)如果它不起作用,那么请描述到底什么不起作用,您期望的是什么,也许您期望的与您在问题中描述的不同。当前,当您选择“搜索”按钮时,键
    Enter
    起作用-与原始代码相同。如果您仍在
    条目中时需要使用
    Enter
    ,则必须绑定到
    Entry
    -
    名称。绑定(“”,开场白)
    -请参阅新代码。
    name.bind('<Return>', opener)
    
    def opener(event=None):
    
    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()