如何获取 tkinter Text 对象的内容

Jor*_*tle 1 python tkinter python-2.7

我正在尝试使用Pythontkinter.Text创建文本区域。这样,我想获取他们放入该文本区域的所有输入并将其显示在其上方的输入字段中。它给出一个错误,说它需要两个参数。

from Tkinter import *

def create_index():
        var = body.get(0)
        link.insert(10,var)
        file.close()

master = Tk()
Label(master, text="Link:").grid(row=0)
Label(master, text="Body:").grid(row=1)

link = Entry(master)
body = Text(master)

link.grid(row=0, column=1)
body.grid(row=1, column=1)
Button(master, text='Show', command=create_index).grid(row=3, column=1, sticky=W, pady=4)

mainloop()
Run Code Online (Sandbox Code Playgroud)

nbr*_*bro 8

要从 a 获取所有输入,您应该使用用于表示文本区域的对象中的tkinter.Text方法。在您的情况下,应该是 type 的变量,所以这里是一个例子:gettkinter.Textbodytkinter.Text

text = body.get("1.0", "end-1c")  
Run Code Online (Sandbox Code Playgroud)

tkinter.Text对象将其内容计算为行和列。确切"1.0"地表明:您想要获取从第 1 行和第 0 个字符开始的内容(这是对象的默认起点tkinter.Text)。

这是一个完整的工作示例,基本上只需单击一个按钮,get_text就会调用该方法并将 的内容添加bodytkinter.Entry我调用的对象中entry(通过使用 类型的变量tkinter.StringVar。有关更多信息,请参阅文档):

import tkinter

def get_text():
    content = body.get(1.0, "end-1c")
    entry_content.set(content)

master = tkinter.Tk()

body = tkinter.Text(master)
body.pack()

entry_content = tkinter.StringVar()
entry = tkinter.Entry(master, textvariable=entry_content)
entry.pack()

button = tkinter.Button(master, text="Get tkinter.Text content", command=get_text)
button.pack()

master.mainloop()
Run Code Online (Sandbox Code Playgroud)

对于另一个很好的例子,请参阅另一篇文章和下面的第一条评论。

  • 请注意,通过使用“END”,您将获得比用户输入的字符多一个的字符——您将获得 tkinter 自动添加的尾随换行符。您可能想要使用“end-1c”来获取除最后一个换行符之外的所有换行符,或修剪最后一个换行符。还值得注意的是,在您的示例中完全没有必要使用“StringVar”。您可以直接设置条目小部件的内容,而无需使用“StringVar”实例。 (3认同)