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

时间:2018-01-12 06:34:04

标签: python tkinter

我正在开发Tkinter GUI。

我想知道如何在Text小部件的末尾删除换行符(\ 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()

感谢。

3 个答案:

答案 0 :(得分:1)

您的问题似乎不是任何额外的换行符,只是您将其配置为显示7行,但您只是插入6.如果您将高度设置为6,则您赢了& #39;看到这个空白行。

答案 1 :(得分:0)

断言:

hist_t = tk.Text(...)

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

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

答案 2 :(得分:0)

文本框总是在末尾插入一个空行。编辑文本框并插入另一个空行时,问题变得更加复杂。但是,在编辑过程中,您可以删除空行,这样您就不能一直使用 "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(换行/回车)打字机时代风格的控制代码是什么。