Python 3.x 如何为";绑定返回键;退出“;关闭tkinter(Python)gui窗口的文本?

Python 3.x 如何为";绑定返回键;退出“;关闭tkinter(Python)gui窗口的文本?,python-3.x,tkinter,Python 3.x,Tkinter,有了下面的Python代码,我想 键入“退出” 按键盘上的“回车”键 关闭tkinter窗口 但在键盘上输入“退出”并按下“回车”键后,“tk窗口”并没有关闭 代码是: import tkinter as tk window = tk.Tk() greeting = tk.Label(text = "Test Tk window Frame") user_input = tk.Text() user_input.pack() greeting.pack() d

有了下面的Python代码,我想

  • 键入“退出”
  • 按键盘上的“回车”键
  • 关闭tkinter窗口
  • 但在键盘上输入“退出”并按下“回车”键后,“tk窗口”并没有关闭

    代码是:

    import tkinter as tk
    
    window = tk.Tk()
    
    greeting = tk.Label(text = "Test Tk window Frame")
    user_input = tk.Text()
    
    user_input.pack()
    greeting.pack()
    
       
    def chat(event=None):
        inputmsg = user_input.get(tk.END)
        if inputmsg is None or inputmsg == "": 
            return None
    
        if inputmsg.lower() == "exit"
            inputmsg.bind('<Return>', lambda e: window.destroy()) # NOT Working
            #window.destroy() # Not Working
            return None
    
    user_input.bind("<Return>", chat) # NOT Working out
    
    window.mainloop()
    
    将tkinter作为tk导入
    window=tk.tk()
    问候语=tk.标签(text=“测试tk窗框”)
    用户输入=tk.Text()
    用户_input.pack()
    greeting.pack()
    def聊天(事件=无):
    inputmsg=user\u input.get(tk.END)
    如果inputmsg为None或inputmsg==“”:
    一无所获
    如果inputmsg.lower()=“退出”
    inputmsg.bind(“”,lambda e:window.destroy())#不工作
    #window.destroy()#不工作
    一无所获
    用户输入。绑定(“,聊天)#不工作
    window.mainloop()
    
    我的意图是只绑定返回键,而不绑定按钮。 由于我是tkinter的Python新手,请大家分享一下我的想法/参考


    谢谢。

    问题的根源是条目文本的获取不正确。因此,
    inputmsg
    在输入后永远不会
    exit
    。你应使用:

    user_input.get(1.0, "end-1c")
    
    有关这些参数的更多详细信息,请阅读及其注释

    更新:如果只需要最后一行,您可以通过两种方式设置参数:

    user_input.get("end-5c", "end-1c") #extract 4 symbols before the last (which is '\n')
    user_input.get("end-1c linestart", "end-1c lineend") #extract the last line from start to end
    

    嗨,欢迎来到SO!尝试将
    print('您键入的输入:',inputmsg)
    放在
    inputmsg
    的赋值之后。这有助于更好地识别您的问题吗?您已经给出了一个线索。当我把print('input you typed:',inputmsg)放在一个inputmsg赋值之后时,我什么也得不到。那么,我哪里做错了…还在想。再多一点线索会有很大帮助。是的,我知道inputmsg永远不会退出。但是当我尝试这个时,tkinter窗口没有关闭。当然,它仍然没有得到最后一行与“退出”字。如何从整个聊天文本中获取最后一个字符串“exit”?如果您使用backspaces在聊天中只留下“exit”一词,它实际上是这样做的。我想您可以在这里对自己做更多的事情。如果
    1.0
    end-1c
    的含义对您来说很清楚,只需使用试错法,将
    1.0
    替换为
    end-2c
    end-3c
    等等,然后查看
    inputmsg
    的值是如何变化的。很快等待我的更新。谢谢@mathfux提供的线索。我已经解决了。