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

2024-09-28 22:09:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一些聊天程序开发一个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)

期待报价)


Tags: to代码text用户send消息return部件
2条回答

对于字符串,可以使用以下命令删除最后一个字符:

msg = msg[:-2]

您还可以使用以下命令删除字符串结尾的所有空格(包括换行符):

msg = msg.rstrip()

好的。看了你的评论后,我想你应该检查一下这个页面:The Tkinter Text Widget

解释如下:

“如果在标记前插入或删除文本,则标记将与其他文本一起移动。要删除标记,必须使用*mark_unset*方法。删除标记周围的文本不会删除标记本身。“

----编辑----

我的错误,无视上面的段落。标记与换行符无关。正如Bryan在回答中解释的那样:tkinter文本小部件保证小部件中最后一个字符后面始终有一个换行符。

最可能的问题是,在插入换行符之前,绑定发生在之前。删除所有内容,然后插入换行符。这是由于文本小部件工作方式的本质——小部件绑定发生在类绑定之前,类绑定是用户输入实际插入到小部件中的地方。

解决方案可能会调整绑定,使其发生在类绑定之后(例如,通过绑定到<KeyRelease>或调整bindtag)。不过,如果不看你是怎么装订的,我就不可能肯定这是你的问题。

另一个问题是,当您获得文本(使用Tex2.get("1.0",END))时,您可能得到的文本比预期的多。tkinter文本小部件保证小部件中最后一个字符后面始终有一个换行符。要获取用户在没有这条换行符的情况下输入的内容,请使用Tex2.get("1.0","end-1c")。或者,在将文本小部件发送给客户机之前,您可能需要将文本小部件中的所有尾随空白去掉。

相关问题 更多 >