[英]How to erase everything from the tkinter text widget?
我正在为一些聊天程序的GUI工作。 对于用户的输入我有Text()小部件,消息通过“Return”发送,之后我清理Text()。 但是,尽管我尝试了很难,但我无法删除Return按钮创建的最后一个“\\ n”。
这是我这部分的代码:
def Send(Event):
MSG_to_send=Tex2.get("1.0",END)
client.send(MSG_to_send)
Tex2.delete("1.0",END)
期待优惠)
很可能你的问题是你的绑定是在插入换行符之前发生的。 您删除了所有内容,但随后插入了换行符。 这是由于文本窗口小部件的工作原理 - 窗口小部件绑定在类绑定之前发生,而类绑定是用户输入实际插入窗口小部件的位置。
解决方案可能会在类绑定之后调整绑定(例如,通过绑定到<KeyRelease>
或调整bindtags)。 但是,如果没有看到你如何进行绑定,我就不可能确定这是你的问题。
另一个问题是当你得到文本时(使用Tex2.get("1.0",END)
),你可能会获得比你预期的更多的文本。 tkinter文本小部件保证小部件中的最后一个字符后面始终有换行符。 要获得用户在没有此换行符的情况下输入的内容,请使用Tex2.get("1.0","end-1c")
。 (可选)您可能希望从文本窗口小部件中删除所有尾随空格,然后再将其发送到客户端。
使用字符串,您可以删除最后一个字符:
msg = msg[:-2]
您还可以使用以下命令从字符串末尾删除所有空格(包括换行符):
msg = msg.rstrip()
好。 阅读完评论后,我认为您应该查看此页面: Tkinter Text Widget
在哪里解释:
“如果在标记之前插入或删除文本,则标记将与其他文本一起移动。要删除标记,必须使用 * mark_unset * 方法。删除标记周围的文本不会删除标记本身。”
- - 编辑 - -
我的错误,无视上一段。 标记与换行符无关。 正如Bryan在他的回答中解释的那样: tkinter文本小部件保证小部件中的最后一个字符后面总是有换行符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.