Я до сих пор не могу полностью понять, чего вы пытаетесь достичь, но давайте разберемся на более мелкие кусочки.
Во-первых, в вашей текущей forward
функции:
self.parent.parent.sheet_dict["Week 2"].upper_tabs_dict["Final"].button.configure(command= self.parent.display_results)
Это только изменяет команду кнопки. Судя по всему, вместо этого вы хотите выполнить команду. Если это так, просто вызовите метод напрямую:
self.parent.parent.sheet_dict["Week 2"].display_results()
Далее вы также сказали, что ожидаете напечатать «Привет, со 2-й недели», когда нажмете кнопку «Вперед» на «1-й неделе», но она по-прежнему будет печатать «Привет, с 1-й недели». Есть на самом деле, как вы кодировали это прямо сейчас, и как он себя ведет. Из вашего say_hi
метода:
print (f"Hi from {self.parent.parent.lnb.index(self.parent.parent.lnb.select())+1}")
Вы просматриваете индекс текущей записной книжки. Поэтому он всегда будет печатать текущий индекс вкладки, даже если вы указали sheet_dict["Week 2"]
.
Мое предложение состоит в том, чтобы включить индекс в первую очередь при создании вашего ноутбука:
class Sheets(ttk.Notebook):
def __init__(self, parent):
...
for num, week in enumerate(self.week_index,1): #pass an index, starting from 1
self.week = One_Weekly_Notebook(self,num)
self.week.pack()
self.add(self.week, text = week)
self.pack()
self.sheet_dict[week] = self.week
class One_Weekly_Notebook(ttk.Notebook):
def __init__(self, parent,index):
super().__init__(parent)
self.pack(fill = tk.BOTH, expand =1)
self.index = index #store the index as an attribute
self.parent = parent
...
def say_hi(self): #layer 3
print (f"Hi from {self.index}")
Тогда он всегда должен возвращать правильный индекс, указанный в вашем forward
методе.