如何在 python GUI 中用 text/text 换行去掉换行符和填充框
How to get rid of line breaks and fill box with text/text wrap in python GUI
这个项目我需要一些帮助。我找不到将我输入到小部件中的文本换行的命令(没有换行符的填充框)。当我按下 'wrap' 按钮时,我想做的是消除换行符。我想要做的是用文本填充框并去掉换行符并将文本包装在框中。
from tkinter import *
from tkinter import scrolledtext
import textwrap
window = Tk()
window.title("Welcome to Text Wrap app")
window.geometry('500x500')
txt = scrolledtext.ScrolledText(window,width=50,height=20)
txt.grid(column=0,row=0)
btn1 = Button(window,text='Clear', command=lambda: txt.delete(1.0,END))
btn2 = Button(window,text='Wrap', command=lambda: textwrap)
btn1.grid(column=4, row=15)
btn2.grid(column=8, row=15)
window.mainloop()
我卡在 btn2 上了。
你可以试试这个:
def doit():
data = txt.get('1.0', END).replace('\n', ' ')
txt.delete('1.0', END)
txt.insert(INSERT, data)
btn2 = Button(window,text='Wrap', command=lambda: doit())
由于您使用的是textwrap,您无需担心换行符(\n),它会为您处理。
因为您需要执行多个语句,所以您不需要 lambda
btn2。另外,需要去掉按钮上的函数括号,否则不点击按钮直接执行。
此外,由于我的 window 切断了环绕按钮,因此将几何图形增加到 window.geometry('600x500')
。
尝试:
# function - setting width to 50 since you set the textbox to 50
def wrap_text():
orig_data = txt.get(1.0, END)
txt.delete(1.0, END)
txt.insert(INSERT, textwrap.fill(orig_data, width=50))
# Button - no function parenthesis
btn2 = Button(window, text='Wrap', command=wrap_text)
使用测试文本的结果。
点击换行按钮之前:
点击换行按钮后:
这个项目我需要一些帮助。我找不到将我输入到小部件中的文本换行的命令(没有换行符的填充框)。当我按下 'wrap' 按钮时,我想做的是消除换行符。我想要做的是用文本填充框并去掉换行符并将文本包装在框中。
from tkinter import *
from tkinter import scrolledtext
import textwrap
window = Tk()
window.title("Welcome to Text Wrap app")
window.geometry('500x500')
txt = scrolledtext.ScrolledText(window,width=50,height=20)
txt.grid(column=0,row=0)
btn1 = Button(window,text='Clear', command=lambda: txt.delete(1.0,END))
btn2 = Button(window,text='Wrap', command=lambda: textwrap)
btn1.grid(column=4, row=15)
btn2.grid(column=8, row=15)
window.mainloop()
我卡在 btn2 上了。
你可以试试这个:
def doit():
data = txt.get('1.0', END).replace('\n', ' ')
txt.delete('1.0', END)
txt.insert(INSERT, data)
btn2 = Button(window,text='Wrap', command=lambda: doit())
由于您使用的是textwrap,您无需担心换行符(\n),它会为您处理。
因为您需要执行多个语句,所以您不需要 lambda
btn2。另外,需要去掉按钮上的函数括号,否则不点击按钮直接执行。
此外,由于我的 window 切断了环绕按钮,因此将几何图形增加到 window.geometry('600x500')
。
尝试:
# function - setting width to 50 since you set the textbox to 50
def wrap_text():
orig_data = txt.get(1.0, END)
txt.delete(1.0, END)
txt.insert(INSERT, textwrap.fill(orig_data, width=50))
# Button - no function parenthesis
btn2 = Button(window, text='Wrap', command=wrap_text)
使用测试文本的结果。
点击换行按钮之前:
点击换行按钮后: