我正在开发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()
感谢。
答案 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(换行/回车)打字机时代风格的控制代码是什么。