id_666i
@id_666i

Как передать текст через .get() в python?

Привет, я делаю небольшой текстовый редактор и хочу сделать сохранение набранного текста, написал такой код
import os
import tkinter as tk
from tkinter import *
#for name in os.listdir("C://"):
#    print (name)
class Main(tk.Frame):
    def __init__(self, root):
        super().__init__(root)
        self.toolbar()
        self.Text()
    
    def toolbar(self): # Добавляю в тулбар кнопки
        toolbar = tk.Frame(bg='#d7d8e0', bd=4) # Создаём тулбар
        toolbar.pack(side=tk.TOP, fill=tk.X)

        btn_new = tk.Button(toolbar, text='Создать файл', bd = 4)
        btn_new.pack(side=tk.LEFT)
        
        btn_save = tk.Button(toolbar, text='Сохранить файл', bd = 4, command=self.saveTextField)
        btn_save.pack(side=tk.LEFT)

    def saveTextField(self, textField):
            print(textField)

    def Text(self):
        textField = Text(width=200, height=100, fg='black', wrap=WORD)
        textField.pack()
        self.saveTextField(textField.get())





if __name__ == "__main__": # Если окно запущенно, то создает наше главное окно
    root = tk.Tk()
    app = Main(root)
    app.pack()
    root.title("Text 0.01v")
    root.geometry("800x600+450+100")
    root.resizable(True, True)
    root.mainloop()

Но при компиляции выходит такая ошибка ТypeError: get() missing 1 required positional argument: 'index1'

Посмотрел что это значит в инете, добавил нужные параметры сюда self.saveTextField(textField.get('1.0', END))
И при сохранение текста выводится такая ошибка TypeError: saveTextField() missing 1 required positional argument: 'textField'

Подскажите как исправить
  • Вопрос задан
  • 780 просмотров
Пригласить эксперта
Ответы на вопрос 1
sanya84
@sanya84
Фанатик Python 3
Надо так:
import os
import tkinter as tk
from tkinter import *

#for name in os.listdir("C://"):
#    print (name)

class Main(tk.Frame):
    def __init__(self, root):
        super().__init__(root)
        self.toolbar()
        self.Text()

    def toolbar(self): # Добавляю в тулбар кнопки
        toolbar = tk.Frame(bg='#d7d8e0', bd=4) # Создаём тулбар
        toolbar.pack(side=tk.TOP, fill=tk.X)

        btn_new = tk.Button(toolbar, text='Создать файл', bd = 4)
        btn_new.pack(side=tk.LEFT)

        btn_save = tk.Button(toolbar, text='Сохранить файл', bd = 4, command=self.saveTextField)# Вот здесь вы вызываете функцию но не передаёте параметры  saveTextField(self, textField << Вот) да и по моему пр таком вызове и нельзя передать параметры
        btn_save.pack(side=tk.LEFT)

    def saveTextField(self):
            with open("example.txt", "w") as file:
                file.write(self.textField.get(1.0, END))
                

    def Text(self):
        self.textField = Text(width=200, height=100, fg='black', wrap=WORD) # что сделать object доступным во всём классе используйте self я вот это self.textField использую в это функции saveTextField
        self.textField.pack()


if __name__ == "__main__": # Если окно запущенно, то создает наше главное окно
    root = tk.Tk()
    app = Main(root)
    app.pack()
    root.title("Text 0.01v")
    root.geometry("800x600+450+100")
    root.resizable(True, True)
    root.mainloop()

Что вам сказать лучше изучайте ООП в Python
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы