ОС: Windows 10 Версия Python 3.12 . Используемые библиотеки: Tkinter. Здравствуйте, пишу калькулятор, калькулятор состоит из двух режимов, обычного и расширенного, в обычном режиме(наследуется от родительского) вызываю опрелеленный метод родительского класса получается все как надо, переключаюсь в расширенный режим, там так же этот метод вызывается, хотя я его явно не вызываю. Может, кто нибудь здесь ответит на этот вопрос?
Python:
from tkinter import *
from tkinter.scrolledtext import ScrolledText
class Calculator(Tk):
# Создание класса для перехода между режимами калькулятора, логика калькулятора, и виджеты калькулятора
# переход между режимами калькулятора
def __init__(self, *args, **kwargs):
Tk.__init__(self, *args, **kwargs)
box_container = Frame(self)
box_container.pack(side="top", fill="both", expand=True)
box_container.grid_rowconfigure(0, weight=1)
box_container.grid_columnconfigure(0, weight=1)
self.modes = {}
for K, geometry, title, in zip((RegularCalculatorMode, AdvancedCalculatorMode),
('274x380+500+100', '630x620+380+10'), ("Калькулятор обычный режим ",
"Калькулятор расширенный режим")):
pages = K.__name__
box = K(parent=box_container, controller=self)
self.modes[pages] = (box, geometry, title)
box.grid(row=0, column=0, sticky="nsew")
self.show_frame("RegularCalculatorMode")
def show_frame(self, RegularCalculatorMode):
box, geometry, title = self.modes[RegularCalculatorMode]
self.update_idletasks()
self.geometry(geometry)
self.title(title)
self.resizable(0, 0)
box.tkraise()
#создание дисплея для обычного калькулятора
def entry_display(self):
self.entry_display = Entry(width=22,highlightthickness=4,highlightbackground='black',font=('Arial', 15,'bold'),justify='right')
self.entry_display.insert('0','0')
self.entry_display.place(x=10,y=20)
#создание дисплея для расширенного калькулятора
def text_display(self, height, x, y, width, chars=0):
self.text_display = ScrolledText(self, font=('Arial', 20, 'bold'), width=width, height=height,
highlightthickness=4, highlightbackground='black')
self.text_display.tag_configure('tag-right', justify='right')
self.text_display.insert('end', chars, 'tag-right')
self.text_display.place(x=x, y=y)
# создание кнопки меню, переход между режимами калькулятора
def buttom_menu(self, x, y, command):
button_menu = Button(self, bg='red', text='≡', width=4, font=('Arial', 10,'bold'), bd=5, fg='black',
command=command)
button_menu.place(x=x, y=y)
class RegularCalculatorMode(Frame, Calculator):
# создание класса обычного режима калькулятора
def __init__(self, parent, controller):
Frame.__init__(self, parent)
self.controller = controller
self.entry_display()
self.buttom_menu(10, 90, lambda: controller.show_frame("AdvancedCalculatorMode"))
class AdvancedCalculatorMode(Frame, Calculator):
# создание класса расширенного режима калькулятора
def __init__(self, parent, controller):
Frame.__init__(self, parent)
self.controller = controller
self.text_display(4, 10, 10, 16, 0)
self.buttom_menu(10, 170, lambda: controller.show_frame("RegularCalculatorMode"))
if __name__ == "__main__":
calk = Calculator()
calk.mainloop()