【问题标题】:How to get rid of line breaks and fill box with text/text wrap in python GUI如何在python GUI中摆脱换行符并用文本/文本换行填充框
【发布时间】:2020-09-02 20:50:49
【问题描述】:

我在这个项目上需要一些帮助。我找不到将输入到小部件中的文本(没有换行符的填充框)换行的命令。当我按下“换行”按钮时,我想要做的是摆脱换行符。我想要做的是用文本填充框并摆脱换行符并将文本包装在框中。

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 tkinter text line-breaks fill


    【解决方案1】:

    你可以试试这个:

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

    【讨论】:

    • 1.0 不是正确的索引。文本小部件索引是字符串,而不是浮点数。它有效,但它强化了一个坏习惯。
    • 我在响应中更改了它,但似乎他们在此处的文档示例中使用了浮点数:effbot.org/tkinterbook/text.htm#patterns
    • effbot 上的那些例子是错误的。索引记录为 line.character 形式的字符串。考虑索引1.10。作为一个字符串,表示第一行的第 10 个字符。作为自str(1.10) 以来第一个字符的浮点数是"1.1"
    【解决方案2】:

    由于您使用的是textwrap,因此您无需担心换行符 (\n),它会为您处理。

    由于您需要执行多个语句,因此您不需要在 btn2 上使用 lambda。另外,您需要排除按钮上的函数括号,否则它将立即执行而无需单击按钮。

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

    点击换行按钮后:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 2015-02-27
      • 2019-06-13
      • 1970-01-01
      相关资源
      最近更新 更多