Калькулятор на Python

Всем добрый день, разрабатываю калькулятор, и столкнулся с такой проблемой: калькулятор выполняет все арефметические действия, которые мне нужны, но я не знаю как мне риализовать в действие кнопки MC, MR, MS, M+, M-, Просьба подсказать как правильно это реализовать.

import math
import tkinter as tk
from tkinter import messagebox


class My_Calc(tk.Tk):

    # __init__ function for class tkinterApp
    def __init__(self, *args, **kwargs):
        # __init__ function for class Tk
        tk.Tk.__init__(self, *args, **kwargs)

        # creating a container
        container = tk.Frame(self)
        container.grid(row=0, column=0)

        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        # initializing frames to an empty array
        self.my_frames = {}
        for F, geometry in zip((Normal_Mode, Advanced_Mode, Advanced_Mode_2),
                               ('355x395+500+200', '710x400+400+200', '1000x400+300+200')):
            page_name = F.__name__
            my_frame = F(parent=container, controller=self)
            self.my_frames[page_name] = (my_frame, geometry)
            my_frame.grid(row=0, column=0, sticky="nsew")
        self.show_frame('Normal_Mode')

    def show_frame(self, cont):
        my_frame1, geometry = self.my_frames[str(cont)]
        self.update_idletasks()
        self.geometry(geometry)
        my_frame1.tkraise()

    def my_label(self, text='', width=29, columnspan=5):
        my_label = tk.Label(self, text=text, font='Helvetica 15 bold', anchor="center", width=width)
        my_label.grid(row=0, column=0, columnspan=columnspan, sticky="nsew", pady=5)

    def my_entry(self, columnspan=0):
        self.my_entry = tk.Entry(self, justify="right", bd=9, font='Arial 15 bold')
        self.my_entry.insert(0, "0")
        self.my_entry.grid(row=1, column=0, columnspan=columnspan, sticky="nsew", pady=5)

    def my_page(self, number, page='Advanced_Mode'):
        return tk.Button(self, text=number, width=5, height=1, font='Helvetica 8 bold', bd=4, bg='red',
                         command=lambda: self.controller.show_frame(page))

    def press_the_button(self, number):
        current = self.my_entry.get()
        if current[0] == '0' and len(current) == 1:
            current = current[1:]
        self.my_entry.delete(0, tk.END)
        self.my_entry.insert(0, str(current) + str(number))

    def my_button_2(self, number, bg='gray'):
        return tk.Button(self, text=number, width=5, height=1, font='Helvetica 8 bold', bd=4, bg=bg,
                         command=lambda: self.press_the_button(number))

    def my_button(self, number, bg='gray'):
        return tk.Button(self, text=number, width=5, height=1, font='Helvetica 8 bold', bd=4, bg=bg,
                         command=lambda: self.my_operations(number))

    def my_operations(self, operation):
        current_number = self.my_entry.get()
        if current_number[-1] in '-+/*':
            current_number = current_number[:-1]
        elif '+' in current_number or '-' in current_number or '*' in current_number or '/' in current_number:
            self.my_calk(self)
            current_number = self.my_entry.get()
        self.my_entry.delete(0, tk.END)
        self.my_entry.insert(0, current_number + operation)

    def my_button_equals(self, number, bg='yellow'):
        return tk.Button(self, text=number, width=5, height=1, font='Helvetica 8 bold', bd=4, bg=bg,
                         command=lambda: self.my_calk(number)).grid(row=7, column=4, sticky="nsew", pady=8, padx=8)

    def my_calk(self, number):
        current_number = self.my_entry.get()
        if current_number[-1] in '+-/*':
            operation = current_number[-1]
            current_number = current_number[:-1] + operation + current_number[:-1]
        self.my_entry.delete(0, tk.END)
        try:
            a = self.my_entry.insert(0, eval(current_number))

        except (SyntaxError, NameError):
            self.my_entry.insert(0, 'Вводить нужно только цифры!!!')
        except ZeroDivisionError:
            self.my_entry.insert(0, 'На ноль делить нельзя!!!')


    def my_button_clear(self, number):
        return tk.Button(self, text=number, width=5, height=1, font='Helvetica 8 bold', bd=4, bg='red',
                         command=lambda: self.my_clear(number)).grid(row=2, column=4, sticky="nsew", pady=20, padx=8)

    def my_clear(self, number):
        self.my_entry.delete(0, tk.END)
        self.my_entry.insert(0, '0')


    def my_button_exponentiation(self):
        current_number = self.my_entry.get()
        current_number = str(int(current_number)**2)
        self.my_entry.delete(0, tk.END)
        self.my_entry.insert(0, eval(current_number))


    def my_button_exponentiation_1(self):
        return tk.Button(self, text='x^y', width=5, height=1, font='Helvetica 8 bold', bd=4, bg='grey',
                         command=lambda: self.my_button_exponentiation()).grid(row=4, column=4, sticky="nsew", pady=8, padx=8)

    def my_button_memory(self):
        pass

    def my_button_memory_1(self, number):
        return tk.Button(self, text=number, width=5, height=1, font='Helvetica 8 bold', bd=4, bg='#00bfff',
                         command=lambda: self.my_button_memory())

    def my_buttom_interest(self):
        pass

    def my_buttom_interest_1(self):
        return tk.Button(self, text="%", width=5, height=1, font='Helvetica 8 bold', bd=4, bg='grey',
                         command=lambda: self.my_buttom_interest()).grid(row=3, column=0, sticky="nsew", pady=8, padx=8)

    def my_button_back(self):
        pass

    def my_button_back_1(self):
        return tk.Button(self, text="←", width=5, height=1, bg='#00bfff', font='Helvetica 8 bold', bd=4,
                         command=lambda: self.my_button_back()).grid(row=3, column=1, sticky="nsew", pady=8, padx=8)

    def my_button_1_x(self):
        pass

    def my_button_1_x_1(self):
        return tk.Button(self, text="1/x", width=5, height=1, bg='grey', font='Helvetica 8 bold', bd=4,
                         command=lambda: self.my_button_1_x()).grid(row=3, column=2, sticky="nsew", pady=8, padx=8)

    def my_button_minus_1(self,number = '-'):
        return tk.Button(self, text="+/-", width=5, height=1, bg='grey', font='Helvetica 8 bold', bd=4,
                         command=lambda: self.press_the_button(number)).grid(row=6, column=4, sticky="nsew", pady=8, padx=8)


    def my_button_x_squared(self):
        current_number = self.my_entry.get()
        try:
            current_number = math.sqrt(int(current_number))
            self.my_entry.delete(0, tk.END)
            self.my_entry.insert(0, eval(str(current_number)))
        except ValueError:
            self.my_entry.delete(0, tk.END)
            self.my_entry.insert(0, 'Нельзя вычесть квадратный корень из отрицаиельного числа!!!')

    def my_button_x_squared_1(self):
        return tk.Button(self, text="√", width=5, height=1, bg='grey', font='Helvetica 8 bold', bd=4,
                         command=lambda: self.my_button_x_squared()).grid(row=5, column=4, sticky="nsew", pady=8, padx=8)


    def my_button_clear_minus(self):
        self.my_entry.delete(0, tk.END)
        self.my_entry.insert(0, '0')


    def my_button_clear_minus_1(self):
        return tk.Button(self, text="CE", width=5, height=1, bg='red', font='Helvetica 8 bold', bd=4,
                         command=lambda: self.my_button_clear_minus()).grid(row=3, column=4, sticky="nsew", pady=8, padx=8)





class Normal_Mode(tk.Frame, My_Calc):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller

        My_Calc.my_label(self, text='Калькулятор обычный режим', columnspan=5)
        My_Calc.my_entry(self, columnspan=5)

        My_Calc.my_page(self, "≡", page='Advanced_Mode').grid(row=2, column=0, sticky="nsew", pady=20, padx=8)
        My_Calc.my_button_clear(self, "C")

        My_Calc.my_button_memory_1(self, "MC").grid(row=3, column=0, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_memory_1(self, "MR").grid(row=3, column=1, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_memory_1(self, "MS").grid(row=3, column=2, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_memory_1(self, "M+").grid(row=3, column=3, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_memory_1(self, "M-").grid(row=3, column=4, sticky="nsew", pady=8, padx=8)

        My_Calc.my_button_2(self, 7, 'yellow').grid(row=4, column=0, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_2(self, 8, 'yellow').grid(row=4, column=1, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_2(self, 9, 'yellow').grid(row=4, column=2, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_2(self, 4, 'yellow').grid(row=5, column=0, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_2(self, 5, 'yellow').grid(row=5, column=1, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_2(self, 6, 'yellow').grid(row=5, column=2, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_2(self, 1, 'yellow').grid(row=6, column=0, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_2(self, 2, 'yellow').grid(row=6, column=1, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_2(self, 3, 'yellow').grid(row=6, column=2, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_2(self, 0, 'yellow').grid(row=7, column=0, columnspan=2, sticky="nsew", pady=8,
                                                    padx=8)
        My_Calc.my_button_2(self, ".", 'yellow').grid(row=7, column=2, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button(self, "*", 'grey').grid(row=5, column=3, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button(self, "-", 'grey').grid(row=6, column=3, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button(self, '/', 'grey').grid(row=4, column=3, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button(self, "+", 'grey').grid(row=7, column=3, sticky="nsew", pady=8, padx=8)
        My_Calc.my_button_exponentiation_1(self)
        My_Calc.my_button_x_squared_1(self)
        My_Calc.my_button_minus_1(self)
        My_Calc.my_button_equals(self, "=", '#00bfff')



class Advanced_Mode(tk.Frame, My_Calc):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller


class Advanced_Mode_2(tk.Frame, My_Calc):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller

        # Калькулятор инжинерный режим


if __name__ == '__main__':
    my_app = My_Calc()
    my_app.title('Миронов Дмитрий Валерьевич')
    my_app.resizable(False, False)
    my_app.mainloop()

Ответы (0 шт):