Только начал разбираться с ООП, многих азов еще не постиг, было бы неплохо, если б тут направили на верную дорогу.
Вот пример
from tkinter import *
from tkinter import ttk
class App(Tk):
def __init__(self, parent):
super().__init__()
self.title('Main window')
self.geometry('400x350+800+400')
# self['background'] = "black"
self.put_frames()
def put_frames(self):
self.add_mid_frame = Statusbar(self).grid(row=1, column=0, columnspan=3)
self.add_bot_frame = Footterbar(self).grid(row=2, column=0, columnspan=3)
class Statusbar(Frame):
def __init__(self, parent):
super().__init__(parent)
# self.f = Footterbar(self)
self.put_widgets()
def put_widgets(self):
self.txt = Text(height=15, width=35).grid(row=1, column=0, columnspan=3)
def refresh(self):
self.destroy()
self.__init__()
class Footterbar(Frame):
def __init__(self, parent):
super().__init__(parent)
self.s = Statusbar(self)
self.put_widgets()
def put_widgets(self):
self.btn4 = ttk.Button(text='4').grid(row=10, column=0)
self.btn5 = ttk.Button(text='5').grid(row=10, column=1)
self.btn6 = ttk.Button(text='6', command=self.s.refresh).grid(row=10, column=2)
app = App(Tk)
app.mainloop()
Нужно чтобы кнопка, находящаяся в классе Футера, обновляла текстовое поле Статусбара(можно и весь класс сразу.
Я понимаю есть 2 варианта (а может и больше):
1. Объявить метод непосредственно в классе Футтера и как-то сослаться на Статусбар, аля:
class Footterbar(Frame):
def __init__(self, parent):
super().__init__(parent)
self.s = Statusbar(self)
self.put_widgets()
def put_widgets(self):
self.btn4 = ttk.Button(text='4').grid(row=10, column=0)
self.btn5 = ttk.Button(text='5').grid(row=10, column=1)
self.btn6 = ttk.Button(text='6', command=self.refresh).grid(row=10, column=2)
def refresh(self):
self.s.destroy()
self.s.__init__()
2. Как у меня, объявить метод в обновляемом классе и из другого класса запустить данный метод.
Надо сказать, ни один из этих вариантов у меня не удался. Постоянно высыпают флаги с ошибками.
Если не сложно, направьте пж на верный путь