Предмет: Информатика, автор: Аноним

СРОЧНО ПОМОГИТЕ У МЕНЯ ЕСТЬ ТОЛЬКО 2 ЧАСА ДАЮ 50 БАЛОВ !!!

Приложения:

Ответы

Автор ответа: damntae
1

Ответ:

import tkinter as tk

from tkinter import ttk

def calculate():

   try:

       num1 = float(entry1.get())

       num2 = float(entry2.get())

       operator = operator_var.get()

       if operator == "+":

           result = num1 + num2

       elif operator == "-":

           result = num1 - num2

       elif operator == "*":

           result = num1 * num2

       elif operator == "/":

           if num2 == 0:

               result_label.config(text="На ноль делить нельзя")

               return

           result = num1 / num2

       elif operator == "^":

           result = num1 ** num2

       else:

           result_label.config(text="Выберите действие")

           return

       result_label.config(text=f"Результат: {result:.2f}")

   except ValueError:

       result_label.config(text="Введите числа")

def change_sign():

   try:

       current_result = float(result_label.cget("text").split()[-1])

       result_label.config(text=f"Результат: {current_result * -1:.2f}")

   except ValueError:

       pass

def clear():

   entry1.delete(0, tk.END)

   entry2.delete(0, tk.END)

   operator_var.set("")

   result_label.config(text="Получите ответ")

# Создаем главное окно

root = tk.Tk()

root.title("Калькулятор")

# Создаем и размещаем виджеты с использованием ttk

style = ttk.Style()

style.configure("TButton", font=("Arial", 14))

style.configure("TLabel", font=("Arial", 16))

style.configure("TEntry", font=("Arial", 14))

entry1 = ttk.Entry(root)

entry2 = ttk.Entry(root)

operator_var = tk.StringVar()

entry1.grid(row=0, column=0, padx=10, pady=10)

entry2.grid(row=0, column=1, padx=10, pady=10)

ttk.Label(root, text="Первое число:").grid(row=1, column=0)

ttk.Label(root, text="Второе число:").grid(row=1, column=1)

result_label = ttk.Label(root, text="Получите ответ")

result_label.grid(row=2, column=0, columnspan=2, pady=20)

operators_frame = ttk.Frame(root)

operators_frame.grid(row=3, column=0, columnspan=2)

ttk.Button(operators_frame, text="+", command=lambda: operator_var.set("+")).grid(row=0, column=0, padx=10, pady=10)

ttk.Button(operators_frame, text="-", command=lambda: operator_var.set("-")).grid(row=0, column=1, padx=10, pady=10)

ttk.Button(operators_frame, text="*", command=lambda: operator_var.set("*")).grid(row=1, column=0, padx=10, pady=10)

ttk.Button(operators_frame, text="/", command=lambda: operator_var.set("/")).grid(row=1, column=1, padx=10, pady=10)

ttk.Button(operators_frame, text="^", command=lambda: operator_var.set("^")).grid(row=2, column=0, padx=10, pady=10)

ttk.Button(operators_frame, text="М+", command=change_sign).grid(row=2, column=1, padx=10, pady=10)

ttk.Button(operators_frame, text="C", command=clear).grid(row=3, column=0, columnspan=2, padx=10, pady=10)

ttk.Button(root, text="=", command=calculate).grid(row=4, column=0, columnspan=2, pady=20)

root.mainloop()

Приложения:

nullptr53: ну в моем коде все еще много недоработок
nullptr53: не могли бы ли вы обьяснить что имелось ввиду под M+, M-?
nullptr53: ато я не понял если вас не затруднит конечго
nullptr53: конечно*
nullptr53: кстати наш код даже похож
damntae: Обычно "M+" означает, что вы добавляете текущее значение (результат) к значению в памяти, а "M-" означает, что вы вычитаете текущее значение (результат) из значения в памяти. Таким образом, вы можете сохранить значение в памяти и использовать его позже для выполнения арифметических операций
nullptr53: понятно
nullptr53: аккаунт того кто задал вопрос удален
nullptr53: интересно почему
nullptr53: хорошо что его вопросв не удалились
Автор ответа: nullptr53
0

Вы дали слишком мало времени и я не успел реализовать некоторые вещи как M+, M- а также красивое расположение графических элементов программы

Вот то что я успел накодить я изменю свой ответ, позже с улучшенной версией

import tkinter as tk

def calculate():

try:

# Получаем числа из полей ввода

num1_str = textfield1.get().strip()

num2_str = textfield2.get().strip()

if not num1_str or not num2_str:

raise ValueError("Вы ничего не ввели")

num1 = float(num1_str)

num2 = float(num2_str)

if num2 != 0:

operator = operator_var.get()

# Выполняем соответствующую операцию

if operator == '+':

result = num1 + num2

elif operator == '-':

result = num1 - num2

elif operator == '*':

result = num1 * num2

elif operator == '/':

result = num1 / num2

else:

result = ""

textfield1.delete(0, tk.END)

textfield2.delete(0, tk.END)

# Выводим результат

output.set(result)

else:

output.set("На ноль делить нельзя!")

except ValueError as e:

# Обрабатываем ошибку ввода

output.set(str(e))

def clear():

operator_var.set("")

textfield1.delete(0, tk.END)

textfield2.delete(0, tk.END)

output.set("")

# Создаем главное окно

root = tk.Tk()

root.title("Calculator")

root.configure(bg="black")

root.geometry("600x600")

# Поля ввода

textfield1 = tk.Entry(root, bg="white")

textfield2 = tk.Entry(root, bg="white")

textfield3 = tk.Entry(root, bg="white")

operator_var = tk.StringVar()

operator_var.set('+') # Устанавливаем оператор по умолчанию

# Кнопки

def substraction():

operator_var.set('-')

calculate()

def addition():

operator_var.set('+')

calculate()

def multiplication():

operator_var.set('*')

calculate()

def division():

operator_var.set('/')

calculate()

button1 = tk.Button(root, text="+", command=addition)

button2 = tk.Button(root, text="/", command=division)

button3 = tk.Button(root, text="*", command=multiplication)

button4 = tk.Button(root, text="-", command=substraction)

button5 = tk.Button(root, text="C", command=clear)

# Тексты

text1 = tk.Label(root, text="Введите числа")

text2 = tk.Label(root, text="Выберите действие")

text3 = tk.Label(root, text="Получите ответ")

# Поле вывода

output = tk.StringVar()

output_label = tk.Label(root, textvariable=output, bg="black", fg="white")

# Располагаем виджеты в окне

textfield1.grid(row=0, column=0)

textfield2.grid(row=1, column=0)

textfield3.grid(row=4, column=0)

text1.grid(row=0, column=1)

text2.grid(row=1, column=1)

text3.grid(row=2, column=1)

button1.grid(row=0, column=2)

button2.grid(row=1, column=2)

button3.grid(row=2, column=2)

button4.grid(row=3, column=2)

button5.grid(row=5, column=2)

output_label.grid(row=4, column=0, columnspan=3)

# Запускаем цикл событий

root.mainloop()

Приложения:
Похожие вопросы
Предмет: Русский язык, автор: k877768003038