Python 3.x 如何为";绑定返回键;退出“;关闭tkinter(Python)gui窗口的文本?
有了下面的Python代码,我想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
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提供的线索。我已经解决了。