如何在python GUI中去掉换行符和填充框中的texttext wrap?

问题描述 投票:0回答:1

我需要一些帮助来完成这个项目。我找不到将我输入到小组件中的文本包起来的命令(没有换行符的填充框)。我想做的是,当我按下 "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上。

python text line-breaks fill
1个回答
0
投票

你可以试试这个。

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())

0
投票

因为你使用的是 文本包 你不需要担心换行符(\n),它会为你处理。

由于你需要执行多条语句,你不需要一个 lambda btn2上。另外,需要排除按钮上的函数括号,否则不点击按钮就会立即执行。

另外,将几何体增加到 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按钮之前。

enter image description here

点击Wrap按钮后:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.