Python Tkinter Text:使文本框将多行识别为单独的输入?
我试图制作一个程序,接受用户输入并修改它(用户输入将是各种10位字符串),然后返回修改后的结果。目前,我可以通过一行输入实现我想要的功能,但我想添加允许用户输入多个输入的功能,并让程序分别修改每个输入。但是,在其当前状态下,它将简单地修改文本框中的所有内容,就像它是一个长字符串一样,尽管它位于单独的行中 我在想,我可以试着把文本框中的每个输入都做成一个列表,然后以这种方式进行迭代?我不确定是否有更好的方法Python Tkinter Text:使文本框将多行识别为单独的输入?,python,tkinter,tkinter-text,Python,Tkinter,Tkinter Text,我试图制作一个程序,接受用户输入并修改它(用户输入将是各种10位字符串),然后返回修改后的结果。目前,我可以通过一行输入实现我想要的功能,但我想添加允许用户输入多个输入的功能,并让程序分别修改每个输入。但是,在其当前状态下,它将简单地修改文本框中的所有内容,就像它是一个长字符串一样,尽管它位于单独的行中 我在想,我可以试着把文本框中的每个输入都做成一个列表,然后以这种方式进行迭代?我不确定是否有更好的方法 import tkinter as tk root = tk.Tk() def ret
import tkinter as tk
root = tk.Tk()
def returnEntry(arg=None):
rawresult = myEntry.get("1.0","end-1c")
#functionality here
modifiedresult = rawresult+str(' modded')
resultLabel.config(text=modifiedresult)
myEntry.delete(0,END)
canv = tk.Canvas(root,height=500,width=1000,bg='misty rose')
canv.pack()
myEntry = tk.Text(root, width=60)
myEntry.focus()
myEntry.bind("<Return>",returnEntry)
myEntry.place(relx=.05,rely=.1)
enterEntry = tk.Button(root, text= "Convert", command=returnEntry, bg='snow')
enterEntry.pack()
resultLabel = tk.Label(root, text = "")
resultLabel.place(relx=.55,rely=.1)
root.geometry("+700+400")
root.mainloop()
只需使用str.splitlines()来处理它:
请注意报告字符串中的\n。拆分行将文本“拆分”为两段(换行符)
那么,我应该如何在代码中使用它呢?我不熟悉str.splitlines(),我应该在我的.get()中使用它吗?@BranL使用
rawresult.splitlines()
。谢谢,这很有效,但现在我遇到了另一个问题,我的函数只修改文本框中的第一行,而不修改任何其他行。我将在编辑我的问题时发布我的更新代码。好的,所以我发现它实际上正在修改列表中的所有项目,只是没有在标签中正确显示。。。
def returnEntry(arg=None):
rawresult = myEntry.get("1.0","end-1c")
list_of_entries = []
for line in rawresult.splitlines():
list_of_entries.append(line.upper())
#--------------------------------------------------------------
#functionality here
for entries in list_of_entries:
modifiedresult = entries+str(' modded')
#--------------------------------------------------------------
resultLabel.config(text=modifiedresult)
myEntry.delete(0,END)
my_text = """This is a very lenghty text example
To give an idea on operating
On strings using built-in method
string.splitlines()"""
repr(my_text)
"'This is a very lenghty text example\\nTo give an idea on operating\\nOn strings using built-in method\\nstring.splitlines()'"
## just print
for line in my_text.splitlines():
print(line+'\n')
## do some transormation
for line in my_text.splitlines():
print(line.lower()+'\n')
## append to a list to do some further transformation
some_list = []
for line in my_text.splitlines():
some_list.append(line.upper())
print(some_list[-1]+'\n')