2024-09-28 22:09:40 发布
网友
我正在为一些聊天程序开发一个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)
期待报价)
对于字符串,可以使用以下命令删除最后一个字符:
msg = msg[:-2]
您还可以使用以下命令删除字符串结尾的所有空格(包括换行符):
msg = msg.rstrip()
好的。看了你的评论后,我想你应该检查一下这个页面:The Tkinter Text Widget
解释如下:
“如果在标记前插入或删除文本,则标记将与其他文本一起移动。要删除标记,必须使用*mark_unset*方法。删除标记周围的文本不会删除标记本身。“
----编辑----
我的错误,无视上面的段落。标记与换行符无关。正如Bryan在回答中解释的那样:tkinter文本小部件保证小部件中最后一个字符后面始终有一个换行符。
最可能的问题是,在插入换行符之前,绑定发生在之前。删除所有内容,然后插入换行符。这是由于文本小部件工作方式的本质——小部件绑定发生在类绑定之前,类绑定是用户输入实际插入到小部件中的地方。
解决方案可能会调整绑定,使其发生在类绑定之后(例如,通过绑定到<KeyRelease>或调整bindtag)。不过,如果不看你是怎么装订的,我就不可能肯定这是你的问题。
<KeyRelease>
另一个问题是,当您获得文本(使用Tex2.get("1.0",END))时,您可能得到的文本比预期的多。tkinter文本小部件保证小部件中最后一个字符后面始终有一个换行符。要获取用户在没有这条换行符的情况下输入的内容,请使用Tex2.get("1.0","end-1c")。或者,在将文本小部件发送给客户机之前,您可能需要将文本小部件中的所有尾随空白去掉。
Tex2.get("1.0",END)
Tex2.get("1.0","end-1c")
对于字符串,可以使用以下命令删除最后一个字符:
您还可以使用以下命令删除字符串结尾的所有空格(包括换行符):
好的。看了你的评论后,我想你应该检查一下这个页面:The Tkinter Text Widget
解释如下:
“如果在标记前插入或删除文本,则标记将与其他文本一起移动。要删除标记,必须使用*mark_unset*方法。删除标记周围的文本不会删除标记本身。“
----编辑----
我的错误,无视上面的段落。标记与换行符无关。正如Bryan在回答中解释的那样:tkinter文本小部件保证小部件中最后一个字符后面始终有一个换行符。
最可能的问题是,在插入换行符之前,绑定发生在之前。删除所有内容,然后插入换行符。这是由于文本小部件工作方式的本质——小部件绑定发生在类绑定之前,类绑定是用户输入实际插入到小部件中的地方。
解决方案可能会调整绑定,使其发生在类绑定之后(例如,通过绑定到
<KeyRelease>
或调整bindtag)。不过,如果不看你是怎么装订的,我就不可能肯定这是你的问题。另一个问题是,当您获得文本(使用
Tex2.get("1.0",END)
)时,您可能得到的文本比预期的多。tkinter文本小部件保证小部件中最后一个字符后面始终有一个换行符。要获取用户在没有这条换行符的情况下输入的内容,请使用Tex2.get("1.0","end-1c")
。或者,在将文本小部件发送给客户机之前,您可能需要将文本小部件中的所有尾随空白去掉。相关问题 更多 >
编程相关推荐