如何从scrolledtext小部件中获取文本?

时间:2018-12-26 21:32:57

标签: python tkinter gettext

我是tkinter python模块的新手。我尝试做一个项目。我学到了一些有关菜单的新知识,我试图做一个小的UI项目,允许用户在滚动的文本小部件中编写一些内容,然后保存(使用sys模块)。

我已经尝试了一些在按钮上起作用的东西。例如.get(),但没有用。我还尝试了["text"]方法。

import tkinter, sys

root = tkinter.Tk()

class saveProject:
    def __init__(self, master):
        self.master = master
        self.textFrame = tkinter.scrolledtext.ScrolledText(self.master, width=100, bd=10, relief="raised")
        self.textFrame.pack()
     def save(self):
        #self.saveText = self.textFrame.get()
        self.saveText = self.textFrame["text"]

project = saveProject(root)
root.mainloop()

问题是,正如我已经说过的,我不知道如何从tkinter.scrolledtext.ScrolledText小部件中提取文本。

2 个答案:

答案 0 :(得分:0)

因此,出于好奇,我尝试了描述here的内容(与OP问题的评论相同的链接)。它也适用于scrolledtext

import tkinter, sys
from tkinter import scrolledtext

root = tkinter.Tk()

class saveProject:
    def __init__(self, master):
        self.master = master
        self.textFrame = scrolledtext.ScrolledText(self.master, width=100, bd=10, relief="raised")
        self.textFrame.pack()
        self.saveb = tkinter.Button(self.master, text="Save", command= lambda : self.save())
        self.saveb.pack()

    def save(self):
        cur_inp = self.textFrame.get("1.0", tkinter.END)
        fl = open("output.txt", "w")
        fl.write(cur_inp)

project = saveProject(root)
root.mainloop()

我在ScrolledText小部件的底部添加了一个保存按钮。小部件内容保存在output.txt区域内。

答案 1 :(得分:0)

help(ScrolledText)表示它是tkinter.Text小部件的子类,这显然意味着使用get()方法和索引从文本中获取文本的方式是相同的(这里有一些{ {3}}关于Text小部件索引。

以下是获取小部件中所有文本的示例(我添加了保存文本 Button以测试save()方法):

import sys
import tkinter as tk
from tkinter.scrolledtext import ScrolledText

class SaveProject:
    def __init__(self, master):
        self.master = master
        self.textFrame = ScrolledText(self.master, width=100, bd=10, relief="raised")
        self.textFrame.pack()
        # Added for testing.
        self.save_btn = tk.Button(self.master, text='Save text', command=self.save)
        self.save_btn.pack()

    def save(self):
        self.saveText = self.textFrame.get('1.0', tk.END)  # Get all text in widget.
        print('self.saveText:', self.saveText)

root = tk.Tk()
project = SaveProject(root)
root.mainloop()