如何在 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)

使用测试文本的结果。

点击换行按钮之前:

点击换行按钮后: