Вызов методов извне класса в Python - события Tkinter - PullRequest
0 голосов
/ 03 мая 2018

Я хочу вызвать метод в другом классе и внести изменения в родительский класс при нажатии кнопки в Python. Объяснить; При визуальном программировании Tkinter я нажимаю кнопку, чтобы изменить главное окно, и я не могу изменить свойства в главном окне другим методом класса.

Я получаю сообщение об ошибке ниже.

Исключение в обратном вызове Tkinter Traceback (последний вызов был последним):

Файл "/usr/lib/python3.5/tkinter/_ init _.py", строка 1553, в _ вызов _

return self.func(*args)

TypeError: buton_goster () отсутствует 1 обязательный позиционный аргумент: 'событие'


class Butonol(object): #Button class


    def __init__(self):
        ...

    def buton_goster(self, event ): # Properties kisminda ozellik gosterir

        Test.countshow = Test.countshow + 1;
        if(Test.countshow >1):
            Test.props0.pack_forget()
            Test.props.pack_forget()
            ...

А вот и тестовый класс

class Test(Frame):

    countshow = 0

    ...
    def new_Button(self):
        self.nesne = Butonol()
        self.but= Button(self.mainFrame,text = self.nesne.text)
        self.but.bind('<Button-1>',Butonol.buton_goster)
        self.but.bind('B1-Motion>',self.label_tasi)
        self.but.pack(side = LEFT,anchor = N)
        Butonol.butonsay = Butonol.butonsay + 1
        Butonol.butonliste.append(self.but)

1 Ответ

0 голосов
/ 03 мая 2018

ошибка правильная, Когда вы делаете привязку, вы не передаете событие, вы просто добавляете указатель на функцию.

Если buton_goster не требуется «событие», вы должны удалить его или предоставить событие в качестве входных данных при вызове функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...