Python Tkinter 滚动文本
我正在尝试制作一个Tkinter的输入框,但我需要的空间比一行要多。看起来
self.scroll = ScrolledText.ScrolledText(self.tk).pack()
是目前最好的方法,但我不知道怎么从self.scroll中获取输入的文本,并把它用在其他地方,相关的文档也没有很清楚。有没有人知道该怎么做?
3 个回答
0
要从tkinter中的Scrolltext
小部件中获取输入的文本,可以使用和Text
小部件相同的get
方法(类似问题)。这个方法有两个参数,分别是提取文本的开始位置和结束位置。在你的情况下,似乎你想获取整个文本,这可以通过从行索引"1.0"提取文本到tkinter.END
来实现,后者是一个常量,始终指向最后一行的索引。(有关行索引的更多信息,请查看这个链接。)
get方法的语法是 -:
widget.get("1.0", tkinter.END)
在你的情况下,它将变成 -:
self.scroll.get("1.0", tkinter.END)
此外,正如@furas指出的那样,pack
方法应该单独调用,因为pack返回None
,有关更多信息,请参考这个讨论。修正后的代码部分将是 -:
self.scroll = ScrolledText.ScrolledText(self.tk)
self.scroll.pack()
2
你可以通过调整高度参数来实现多行显示:
sText = ScrolledText.ScrolledText(root, height=15)
sText.pack()
获取内容的方法是:
words = sText.get(1.0,END)
希望这对你有帮助!
13
错误:
self.scroll = ScrolledText.ScrolledText(self.tk).pack()
这样做会把 pack()
的结果赋值给 self.scroll
(而不是 ScrolledText
),
而且 pack()
总是返回 None
。
总是:
self.scroll = ScrolledText.ScrolledText(self.tk)
self.scroll.pack()
现在看看标准的 文本小部件 文档,了解如何获取/设置文本。
from tkinter import *
import tkinter.scrolledtext as ScrolledText
master = Tk()
st = ScrolledText.ScrolledText(master)
st.pack()
st.insert(INSERT, "Some text")
st.insert(END, " in ScrolledText")
print(st.get(1.0, END))
master.mainloop()