Как получить текст из виджета с прокруткой текста? - PullRequest
0 голосов
/ 27 декабря 2018

Я новичок в модуле tkinter python.Я пытаюсь сделать проект.Я узнал что-то новое о меню и пытаюсь создать небольшой проект пользовательского интерфейса, который позволит пользователю написать что-то в виджете с прокруткой текста и затем сохранить его (с помощью модуля sys).

IЯ уже пробовал некоторые вещи, которые работали на кнопках.Например .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 голосов
/ 27 декабря 2018

help(ScrolledText) указывает, что это подкласс виджета tkinter.Text, что, по-видимому, означает, что способ получения текста из него одинаков - использование метода и индексов get() (вот некоторая документация около 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()
0 голосов
/ 27 декабря 2018

Итак, из любопытства я попробовал то, что описал здесь (та же ссылка в моем комментарии к вопросу ОП).Это работает также для 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.

...