Как заставить дочернюю кнопку влиять на родительское значение? - PullRequest
0 голосов
/ 15 октября 2019
from tkinter import *

root = Tk()

class parent():
    def __init__(self):
        self.children = []
        self.value = 0

    def main(self):
        try:
            self.child.pack()
        except:
            None

class child(Button):
    def __init__(self,master,**kwargs):
        super().__init__(master,command = self.main,**kwargs)

    def main(self):
        #change parent value += 1

new_parent = parent()
new_parent.children.append(child(root,text = 'hello'))
new_parent.main()
root.mainloop()

В parent.children будет несколько детей и несколько родителей. Как сделать так, чтобы дочерняя кнопка влияла на родительское значение?

1 Ответ

0 голосов
/ 15 октября 2019

Чтобы вызвать метод объекта, вам нужна ссылка на этот объект. Самый простой способ - передать ссылку на родителя при создании потомка. Это не имеет ничего общего с tkinter, это фундаментальный аспект программирования.

...
class child(Button):
    def __init__(self, master, parent, **kwargs):
        self.parent = parent
        super().__init__(master,command = self.main,**kwargs)

    def main(self):
        self.parent.value += 1

new_parent = parent()
new_parent.children.append(child(root, new_parent, text = 'hello'))
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...