繁体   English   中英

如何删除文本小部件末尾的换行符 (\\n)?

[英]How can I remove newline character (\n) at the end of Text widget?

我正在开发 Tkinter GUI。

我想知道如何删除文本小部件末尾的换行符 (\\n)? 这让我的应用程序看起来很难看,我不想要这个。

示例代码是:

from tkinter import *
from tkinter import ttk

window = Tk()
window.title('Advanced Calculator v0.9')
window.geometry('500x400')
window.resizable(False, False)

window.configure(background='black')

hist_t = Text(window, background='black', height='7', foreground='red', font='Verdana', highlightcolor='grey', highlightthickness=1, relief='solid')

Label(window, text='History:', background='black', foreground='red').pack(pady=3, anchor='w')

hist_t.pack(fill='x', padx=3)

hist_t.insert('end', '4 + 4 = 8\n2 + 2 = 4\n5 + 3 = 8\n10 + 13 = 23\n30 + 10 = 40\n12 + 8 = 20')

window.mainloop()

谢谢。

断言:

hist_t = tk.Text(...)

每当您想删除最后一个字符时,您始终可以调用hist_t.delete('end-1c', 'end') ,在这种情况下是换行符。 只有当它是换行符时,您还可以删除最后一个字符:

while hist_t.get('end-1c', 'end') == '\n':
    hist_t.delete('end-1c', 'end')

您的问题似乎不是任何额外的换行符,只是您将其配置为显示 7 行,但您只插入了 6 行。如果将高度设置为 6,您将不会看到此空行。

文本框总是在末尾插入一个空行。 编辑文本框并插入另一个空行时,问题变得更加复杂。 但是,在编辑期间,您可以删除空行,因此您不能一直使用"end-1c"

诀窍是在编辑后删除 1 个或多个额外的空行:

# Rebuild lyrics from textbox
self.work_lyrics_score = \
    self.lyrics_score_box.get('1.0', tk.END)
while self.work_lyrics_score.endswith('\n\n'):
    # Drop last blank line which textbox automatically inserts.
    # User may have manually deleted during edit so don't always assume
    self.work_lyrics_score = self.work_lyrics_score[:-1]       

但是请注意,这是在 Linux 中。 对于 Windows,您可能需要以下内容:

while self.work_lyrics_score.endswith('\n\r\n\r'):
    # Drop last blank line which textbox automatically inserts.
    # User may have manually deleted during edit so don't always assume
    self.work_lyrics_score = self.work_lyrics_score[:-2]

或者无论 DOS/Windows LF/CR(换行/回车)打字机时代风格的控制代码是什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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