вызов метода из класса tkinter - PullRequest
0 голосов
/ 25 января 2019

Я очень новичок в Python и пытаюсь разработать фальшивое программное обеспечение для генерации данных, чтобы ученые, работающие с данными, могли учиться быстрее. Мой вопрос о том, как мы можем вызвать метод из под-метода между классами объектов tkinter. У меня есть корневой класс, который создает корневое окно и класс верхнего уровня, который создает верхний уровень (подокно). Мой класс подокна должен обновить виджет в корневом окне, и я не мог этого сделать.

enter code here

class Menu():
    def __init__(self,master):
    ....
    def openwindow(self):
        secondwindow = my_sub_window(root)
    def dosomething(self):
        ....

class my_sub_window():
    def __init__(self, master):
        update_root()
    def update_root(self):
        dosomething()  # How can I call dosomething method in Menu() class?

root = Tk()
myApp = Menu(root)
root.mainloop()

1 Ответ

0 голосов
/ 25 января 2019

В вашем конкретном случае вы бы вызвали функцию, основанную на глобальном myApp классе:

class my_sub_window():
    def update_root(self):
       myApp.dosomething()

Хотя полагаться на такие глобальные переменные, как правило, не очень хорошая идея.Наиболее распространенным решением является передача экземпляра Menu в класс my_sub_window.

Пример:

class Menu():
    def openwindow(self):
        secondwindow = my_sub_window(root)
        ...

class my_sub_window():
    def __init__(self, root):
        self.root = root
    def update_root(self):
        self.root.dosomething()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...