soprovod.sopr() missing 1 required positional argument: 'self'

class soprovod ():

    def sopr(self):
        textbar = Text(root, width = 50, height = 5)
        textbar.pack (anchor=SW)
        self.textbar = textbar


    def sopr_save(self):
        input = self.textbar.get("1.0",END)
        print(input)

    get_btn = Button(padx=10,text='Получить данные',font='Times_New_Roman 20 bold ')
    get_btn.config(command=sopr)
    get_btn.pack()

    get_btn2 = Button(padx=10,text='Сохранить',font='Times_New_Roman 20 bold ')
    get_btn2.config(command=sopr_save)
    get_btn2.pack()

Ошибка:

TypeError: soprovod.sopr() missing 1 required positional argument: 'self'

Ответы (1 шт):

Автор решения: insolor

Вот исправленный вариант с пометками в комментариях:

from tkinter import *


class Soprovod:  # <- классы нужно называть с большой буквы, скобки не обязательны (если не указан родительский класс)

    def sopr(self):
        textbar = Text(root, width = 50, height = 5)
        textbar.pack (anchor=SW)
        self.textbar = textbar


    def sopr_save(self):
        input = self.textbar.get("1.0",END)
        print(input)
    
    # <-- не должно быть никакого исполнимого кода вне методов класса


root = Tk()

soprovod = Soprovod()  # <- нужно создать объект класса

get_btn = Button(padx=10,text='Получить данные',font='Times_New_Roman 20 bold ')
get_btn.config(command=soprovod.sopr)  # <- используем метод объекта (не класса), как обработчик
get_btn.pack()

get_btn2 = Button(padx=10,text='Сохранить',font='Times_New_Roman 20 bold ')
get_btn2.config(command=soprovod.sopr_save)  # <- используем метод объекта (не класса), как обработчик
get_btn2.pack()


root.mainloop()
→ Ссылка