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

Dav*_*vid 7 python tkinter gettext

我是tkinterpython 模块的新手。我尝试做一个项目。我学到了一些关于菜单的新知识,我正在尝试制作一个小的 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()
Run Code Online (Sandbox Code Playgroud)

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

Val*_*ino 5

因此,出于好奇,我尝试了此处描述的内容(与我对 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()
Run Code Online (Sandbox Code Playgroud)

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


mar*_*eau 5

help(ScrolledText)表明它是小tkinter.Text部件的子类,这显然意味着从中获取文本的方式与使用“文本小部件索引”的方法相同的 \xe2\x80\x94 get()(这里有一些关于它们的文档) 。

\n

下面是一个获取小部件中所有文本的示例(我添加了一个Save text Button来测试该save()方法):

\n
import sys\nimport tkinter as tk\nfrom tkinter.scrolledtext import ScrolledText\n\nclass SaveProject:\n    def __init__(self, master):\n        self.master = master\n        self.textFrame = ScrolledText(self.master, width=100, bd=10, relief="raised")\n        self.textFrame.pack()\n        # Added for testing.\n        self.save_btn = tk.Button(self.master, text=\'Save text\', command=self.save)\n        self.save_btn.pack()\n\n    def save(self):\n        self.saveText = self.textFrame.get(\'1.0\', tk.END)  # Get all text in widget.\n        print(\'self.saveText:\', self.saveText)\n\nroot = tk.Tk()\nproject = SaveProject(root)\nroot.mainloop()\n
Run Code Online (Sandbox Code Playgroud)\n