I
I
id_666i2018-11-02 21:02:24
Python
id_666i, 2018-11-02 21:02:24

How to pass text via .get() in python?

Hello, I'm making a small text editor and I want to save the typed text, I wrote this code

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()

But when compiling, the following error occurs TypeError: get() missing 1 required positional argument: 'index1' I
looked up what it means on the Internet, added the necessary parameters here . textField' Tell me how to fix it self.saveTextField(textField.get('1.0', END))

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alexander, 2018-11-02
@sanya84

It should be like this:

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()

What can I say better learn OOP in Python

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question