【问题标题】:How to get the content of a tkinter Text object如何获取 tkinter Text 对象的内容
【发布时间】:2019-10-20 05:59:55
【问题描述】:

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

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

【问题讨论】:

  • “需要参数”?请用它给出的错误编辑您的问题,这将有很大帮助。
  • 您阅读过文本小部件的文档吗?论据要求有据可查。

标签: python python-2.7 tkinter


【解决方案1】:

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

text = body.get("1.0", "end-1c")  

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

这是一个完整的工作示例,基本上在单击按钮时,方法get_text 被调用并将body 的内容添加到我称为tkinter.Entrytkinter.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()

有关另一个很好的例子,请参阅另一个 post 和下面的第一条评论。

【讨论】:

  • 请注意,通过使用END,您将获得比用户输入的多一个字符——您将获得 tkinter 自动添加的尾随换行符。您可能想使用"end-1c" 来获取除最后一个换行符之外的所有内容,或者修剪最后一个换行符。还值得注意的是,在您的示例中,使用 StringVar 是完全没有必要的。您可以直接设置条目小部件的内容,而无需使用StringVar 的实例。
  • @BryanOakley 好的,感谢批评,我将至少编辑END 的部分;)
  • @BryanOakley 既然您是tkinterttk 的专家(据我所知),您能否也看看我昨天尝试给出的这个答案:stackoverflow.com/questions/27912250/…。我试图解决这个问题,但我在答案中仍然描述了一些问题。如果您可以尝试改进它,它也可以作为一个很好的参考对未来的访问者有用(谁知道?)。谢谢:)
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 2015-01-28
  • 2021-10-01
  • 1970-01-01
  • 2013-01-27
  • 2016-12-24
  • 2015-03-14
相关资源
最近更新 更多