繁体   English   中英

如何从tkinter文本小部件中删除所有内容?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM