簡體   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