簡體   English   中英

Tkinter:如何使用文本小部件從用戶那里獲取書面文本並將它們打印成多行?

[英]Tkinter: How to get written text from user using text widget and print them in multiple lines?

我想在三個不同的行中打印這四行段落,但它總是在一行中。

代碼是這樣的:

def any():
    v = box.get('1.0',END+'-1c')
    print(v)


box = Text(window,width=50,height=20,wrap = WORD)
box.grid(row=0,column=0,padx=15,pady=15)

btn = Button(window,text = 'Click',command = any).grid(row=0,column=1)
window.mainloop()

在我寫的文本框中:

Hello world myself Unknown Program Currently
programming with tkinter and wanna print this three
line code in multiple lines rather than a single
line.

我得到了什么:

Hello world myself Unknown Program Currently pragraming with tkinter rand wanna print this three line code in multiple lines rather than a single line.

它打印在單行中,我想像在文本框中一樣打印 4 行。我該怎么做?

即使您的問題看起來像是您輸入了四行文本(即:帶有換行符的文本),但 output 的唯一解釋是您輸入了一行長文本,該文本由文本自動換行小部件。

如果您希望打印的 output 由於自動換行而與您看到的內容相匹配,您可以遍歷顯示的每一行,將它們一一打印出來。 Tkinter 可以通過使用“display lineend”修改索引來獲取顯示行的結尾。 例如, "1.0 display lineend"將表示 position 緊跟在顯示行的最后一個字符之后。

您可以使用它來迭代每個顯示的行。 以下是您可以如何執行此操作的示例:

index = "1.0"
while box.compare(index, "<", "end"):
    text = box.get(index, f"{index} display lineend")
    print(text)
    index = box.index(f"{index} + 1 display line")

這從索引“1.0”開始,直到顯示的第一行末尾的所有內容,然后打印出來。 然后它將起始索引調整到下一個顯示行的開頭,並繼續直到起始索引與小部件中的最終索引相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM