d3174 / Калькулятор Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
| print (‘Приветствуем вас в калькуляторе Python’) |
| q1 = int (input(‘Введите число 1: ‘)) |
| q2 = int (input(‘Введите число 2: ‘)) |
| v = int (input(‘Какую операцию вы хотите выполнить? \n 1 Сложение \n 2 Вычитание \n 3 Деление \n 4 Умножение \n’)) |
| if v == 1: |
| r = q1 + q2 |
| p = ‘сложения’ |
| t = p |
| if v == 2: |
| r = q1 — q2 |
| l = ‘вычитания’ |
| t = l |
| if v == 3: |
| r = float(q1 / q2) |
| m = ‘деления’ |
| t = m |
| if v == 4: |
| r = q1 * q2 |
| n = ‘умножения’ |
| t = n |
| print (‘Результат ‘,t,’ = ‘,r) |
yasich7 commented May 5, 2019
Where I can teach a Python?
MotoIlyuha commented Jan 11, 2021
MotoIlyuha commented Jan 11, 2021
Очень рекомендую курс на платформе Stepik (https://stepik.org/course/512/syllabus). Я сам выучил базовый уровень языка по этому курсу всего за две недели, что в дальнейшем помогло мне выигрывать серьезные олимпиады. Звучит как реклама 🙂
SergMagpie commented Jan 28, 2021
Очень рекомендую курс на платформе Stepik (https://stepik.org/course/512/syllabus). Я сам выучил базовый уровень языка по этому курсу всего за две недели, что в дальнейшем помогло мне выигрывать серьезные олимпиады. Звучит как реклама 🙂
Its great! I’m too learn in Stepik
SmIrOn123 commented Sep 11, 2021
`print (‘Приветствуем вас в калькуляторе Python’)
q1 = int (input(‘Введите число 1: ‘))
q2 = int (input(‘Введите число 2: ‘))
q3
if q3== +:
r = q1 + q2
p = ‘сложения’
t = p
if q3 == -:
r = q1 — q2
l = ‘вычитания’
t = l
if q3 == *:
r = float(q1 / q2)
m = ‘деления’
t = m
if q3 == /:
r = q1 * q2
n = ‘умножения’
t = n
print (‘Результат ‘,t,’ = ‘,r)`
syrgabek commented Mar 3, 2022
tenz0wo commented Apr 14, 2022 •
еще продуктивнее)
f = int(input(‘Выберите функцию \nСложение — 1\nВычитание — 2\nУмножение — 3\nДеление — 4\nВозведение в квадрат — 5\nВычисление квадратного корня — 6\nВычисление синуса — 7\nВычисление косинуса — 8\n’))
if f == 1:
ch1 = int(input(‘Введите первое число: ‘))
ch2 = int(input(‘Введите второе число: ‘))
r = ch1 + ch2
elif f == 2:
ch1 = int(input(‘Введите первое число: ‘))
ch2 = int(input(‘Введите второе число: ‘))
r = ch1 — ch2
elif f == 3:
ch1 = int(input(‘Введите первое число: ‘))
ch2 = int(input(‘Введите второе число: ‘))
r = ch1 * ch2
elif f == 4:
ch1 = int(input(‘Введите первое число: ‘))
ch2 = int(input(‘Введите второе число: ‘))
r = float(ch1 / ch2)
elif f == 5:
ch = int(input(‘Введите число: ‘))
r = ch * ch
elif f == 6:
ch = int(input(‘Введите число: ‘))
sqrt = ch ** (0.5)
r = sqrt
elif f == 7:
ch = int(input(‘Введите число: ‘))
r = math.sin(ch)
elif f == 8:
ch = int(input(‘Введите число: ‘))
r = math.cos(ch)
fr1tch commented Jun 30, 2022
import math
def calculator():
try:
print(‘\nВітаємо у кулькуляторі’)
print(‘\n1 — Додавання \n2 — Віднімання \n3 — Множення \n4 — Ділення \n5 — Степінь числа(друге число — степінь) \n6 — Квадратний корінь числа \n7 — Знайти синус \n8 — Знайти косинус \n9 — Знайти тангенс’)
o1=float(input(‘\nВиберіть дію зі списку вище: ‘))
def value1():
global v1
global v2
v1 = float(input(‘\nВведіть перше число: ‘))
v2 = float(input(‘\nВведіть друге число: ‘))
def value2():
global v3
v3 = float(input(‘\nВведіть число:’))
if o1 value1()
if o1 == 1:
r = v1 + v2
print(‘Ваш результат:’,r)
elif o1 == 2:
r = v1 — v2
print(‘Ваш результат:’,r)
elif o1 == 3:
r = v1 * v2
print(‘Ваш результат:’,r)
elif o1 == 4:
r = v1 / v2
print(‘Ваш результат:’,r)
elif o1 == 5:
r =pow(v1,v2)
print(‘Ваш результат:’,r)
if o1 >= 6:
value2()
if o1 == 6:
r = math.sqrt(v3)
print(‘Ваш результат:’,r)
elif o1 == 7:
r = math.sin(v3)
print(‘Ваш результат:’,r)
elif o1 == 8:
r = math.cos(v3)
print(‘Ваш результат:’,r)
elif o1 == 9:
r = math.tan(v3)
print(‘Ваш результат:’,r)
ask = input(‘Ви бажаєте продовжити?(Так/Ні): ‘)
if ask == ‘Так’ or ask == ‘так’:
calculator()
else:
print(‘На все добре!’)
except:
print(‘Сталась помилка. Спробуйте ще раз :(‘)
calculator()
viktoryarosh commented Jan 17, 2023
import math def calculator(): try: print(‘\nВітаємо у кулькуляторі’) print(‘\n1 — Додавання \n2 — Віднімання \n3 — Множення \n4 — Ділення \n5 — Степінь числа(друге число — степінь) \n6 — Квадратний корінь числа \n7 — Знайти синус \n8 — Знайти косинус \n9 — Знайти тангенс’) o1=float(input(‘\nВиберіть дію зі списку вище: ‘)) def value1(): global v1 global v2 v1 = float(input(‘\nВведіть перше число: ‘)) v2 = float(input(‘\nВведіть друге число: ‘)) def value2(): global v3 v3 = float(input(‘\nВведіть число:’)) if o1 = 6: value2() if o1 == 6: r = math.sqrt(v3) print(‘Ваш результат:’,r) elif o1 == 7: r = math.sin(v3) print(‘Ваш результат:’,r) elif o1 == 8: r = math.cos(v3) print(‘Ваш результат:’,r) elif o1 == 9: r = math.tan(v3) print(‘Ваш результат:’,r) ask = input(‘Ви бажаєте продовжити?(Так/Ні): ‘) if ask == ‘Так’ or ask == ‘так’: calculator() else: print(‘На все добре!’) except: print(‘Сталась помилка. Спробуйте ще раз :(‘) calculator()
на функції try помилка і далі не працює
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Footer
© 2023 GitHub, Inc.
You can’t perform that action at this time.
Пишем калькулятор на TK (Python GUI)
Продолжим работу с графическим интерфейсом языка Python3.
Для создания кнопочек возьмём следующий код:
window = Tk() window.title("Calc") window.geometry('220x200') lbl = Label(window, text="0", fg = "black", bg = "white", font=("Arial Bold", 20)) lbl.place(x = 0, y = 0) btn7 = Button(window, text="7",command=press7,width=4);btn7.place(x = 0, y = 70) btn8 = Button(window, text="8",command=press8,width=4);btn8.place(x = 40, y = 70) btn9 = Button(window, text="9",command=press9,width=4);btn9.place(x = 80, y = 70) btn4 = Button(window, text="4",command=press4,width=4);btn4.place(x = 0, y = 100) btn5 = Button(window, text="5",command=press5,width=4);btn5.place(x = 40, y = 100) btn6 = Button(window, text="6",command=press6,width=4);btn6.place(x = 80, y = 100) btn1 = Button(window, text="1",command=press1,width=4);btn1.place(x = 0, y = 130) btn2 = Button(window, text="2",command=press2,width=4);btn2.place(x = 40, y = 130) btn3 = Button(window, text="3",command=press3,width=4);btn3.place(x = 80, y = 130) btn0 = Button(window, text="0",command=press0,width=10);btn0.place(x = 0, y = 160) btn1x = Button(window, text="1/x", width=4,bg="orange");btn1x.place(x = 0, y = 40) btnsqr = Button(window, text="**2", width=4,bg="orange");btnsqr.place(x = 40, y = 40) btnsqrt = Button(window, text="**0.5", width=4,bg="orange");btnsqrt.place(x = 80, y = 40) btnplus = Button(window, text="+",width=4,bg="orange",command=pressplus);btnplus.place(x = 120, y = 40) btnminus = Button(window, text="-",width=4,bg="orange");btnminus.place(x = 120, y = 70) btnmult = Button(window, text="*",width=4,bg="orange");btnmult.place(x = 120, y = 100) btndiv = Button(window, text="/",width=4,bg="orange");btndiv.place(x = 120, y = 130) btn_divv = Button(window, text="//",width=4,bg="orange");btn_divv.place(x = 120, y = 160) btn_dot = Button(window, text=".",width=4,bg="yellow",command=pressdot) btn_dot.place(x = 80, y = 160) btn_back = Button(window, text="<<--",width=4,bg="green",command=pressback);btn_back.place(x = 160, y = 40) btn_c = Button(window, text="CE",width=4,bg="red",command=pressce);btn_c.place(x = 160, y = 70) btnmod = Button(window, text="x**y",width=4,bg="orange");btnmod.place(x = 160, y = 100) btndiv = Button(window, text="%",width=4,bg="orange");btndiv.place(x = 160, y = 130) btneq = Button(window, text="=",width=4,bg="blue",command=presseq);btneq.place(x = 160, y = 160) window.mainloop()
У кнопочек уже созданы привязанные команды для функций: command=presseq и т.п. где presseq — имя функции (объявляется она как def presseq(): , после чего в ней описываются те действия, которые необходимы при нажатии на кнопку). Рассмотрим функцию press7 для кнопки «7»:
def press7(): # ВОЗЬМЁМ ПЕРВУЮ КНОПКУ "7" global oper # получили доступ к oper global oper2 # и к oper2 изнутри функции press7 if oper == '': # ЕСЛИ oper == '', то +,-,/,* не нажимались if lbl["text"]=="0" : # значит вводим первый операнд lbl["text"]="7" # если изначально был нолик else: # если уже нажали на цифру 0-9 if len(lbl["text"]) < 10: # lbl["text"] += "7" # else: # ЕСЛИ oper != '', то ВВОДИТСЯ ВТОРОЙ ОПЕРАНД lbl["text"]="7" # ЗАМЕНИЛИ ПРЕДЫД. ЧИСЛО в lbl на семёрку oper2 = oper # делаем резервную копию нажатия oper = '' #
Обратим внимание на переменные с меткой global, они видны из всех функций и являются общими (глобальными) при работе программы. Весь код приведу в свёрнутом виджете:
Исходный код калькулятора (почти работает, только с «7»):
# -*- coding: utf-8 -*- from tkinter import * global oper #ЗАПОМИНАЕТ ВЫБРАННУЮ ПОЛЬЗОВАТЕЛЕМ ОПЕРАЦИЮ global oper2 #РЕЗЕРВ ВЫБРАННОЙ ПОЛЬЗОВАТЕЛЕМ ОПЕРАЦИИ ПОСЛЕ ВВОДА 1-го ОПЕРАНДА oper = '' oper2 = '' global tmp1 # ПЕРВЫЙ ОПЕРАНД global tmp2 # ВТОРОЙ ОПЕРАНД def press7(): # ВОЗЬМЁМ ПЕРВУЮ КНОПКУ "7" global oper # получили доступ к oper global oper2 # и к oper2 изнутри функции press7 if oper == '': # ЕСЛИ oper == '', то +,-,/,* не нажимались if lbl["text"]=="0" : # значит вводим первый операнд lbl["text"]="7" # если изначально был нолик else: # а если уже нажали на цифру 0-9 if len(lbl["text"]) < 10: # lbl["text"] += "7" # else: # ЕСЛИ oper != '', то ВВОДИТСЯ ВТОРОЙ ОПЕРАНД lbl["text"]="7" # ЗАМЕНИЛИ ПРЕДЫДУЩЕЕ ЧИСЛО В МЕТКЕ lbl на семёрку oper2 = oper # ГОТОВИМСЯ ОЧИСТИТЬ oper - делаем резервную копию нажатия oper = '' # def press8(): if lbl["text"]=="0": lbl["text"]="8" else: if len(lbl["text"]) < 10: lbl["text"] += "8" def press9(): if lbl["text"]=="0": lbl["text"]="9" else: if len(lbl["text"]) < 10: lbl["text"] += "9" def press4(): if lbl["text"]=="0": lbl["text"]="4" else: if len(lbl["text"]) < 10: lbl["text"] += "4" def press5(): if lbl["text"]=="0": lbl["text"]="5" else: if len(lbl["text"]) < 10: lbl["text"] += "5" def press6(): if lbl["text"]=="0": lbl["text"]="6" else: if len(lbl["text"]) < 10: lbl["text"] += "6" def press1(): if lbl["text"]=="0": lbl["text"]="1" else: if len(lbl["text"]) < 10: lbl["text"] += "1" def press2(): if lbl["text"]=="0": lbl["text"]="2" else: if len(lbl["text"]) < 10: lbl["text"] += "2" def press3(): if lbl["text"]=="0": lbl["text"]="3" else: if len(lbl["text"]) < 10: lbl["text"] += "3" def press0(): if lbl["text"]=="0": pass else: if (len(lbl["text"]) < 10): lbl["text"] += "0" def pressdot(): if lbl["text"]=="0" or ("." in lbl["text"]): pass else: if (len(lbl["text"]) < 10): lbl["text"] += "." def pressback(): if len(lbl["text"]) == 1: lbl["text"] = "0" else: lbl["text"] = lbl["text"][:-1] def pressce(): global oper oper = '' global oper2 oper2 = '' global tmp1 global tmp2 tmp1 = 0 tmp2 = 0 lbl["text"] = "0" def pressplus(): global tmp1 # нужна для сохранения в первый операнд global oper # получили доступ к oper global oper2 # и к oper2 изнутри функции pressplus oper = "+" if '.' in lbl["text"]: #если дробное число в первой метке tmp1 = float(lbl["text"]) else: #в первой метке НЕ дробное число tmp1 = int(lbl["text"]) def presseq(): global tmp1 global tmp2 global oper global oper2 if "." in lbl["text"]: tmp2 = float(lbl["text"]) else: tmp2 = int(lbl["text"]) if oper2 == "+": lbl["text"] = str(tmp1 + tmp2) oper = '' tmp1 = 0 tmp2 = 0 window = Tk() window.title("Calc") window.geometry('220x200') lbl = Label(window, text="0", fg = "black", bg = "white", font=("Arial Bold", 20)) lbl.place(x = 0, y = 0) btn7 = Button(window, text="7",command=press7,width=4);btn7.place(x = 0, y = 70) btn8 = Button(window, text="8",command=press8,width=4);btn8.place(x = 40, y = 70) btn9 = Button(window, text="9",command=press9,width=4);btn9.place(x = 80, y = 70) btn4 = Button(window, text="4",command=press4,width=4);btn4.place(x = 0, y = 100) btn5 = Button(window, text="5",command=press5,width=4);btn5.place(x = 40, y = 100) btn6 = Button(window, text="6",command=press6,width=4);btn6.place(x = 80, y = 100) btn1 = Button(window, text="1",command=press1,width=4);btn1.place(x = 0, y = 130) btn2 = Button(window, text="2",command=press2,width=4);btn2.place(x = 40, y = 130) btn3 = Button(window, text="3",command=press3,width=4);btn3.place(x = 80, y = 130) btn0 = Button(window, text="0",command=press0,width=10);btn0.place(x = 0, y = 160) btn1x = Button(window, text="1/x", width=4,bg="orange");btn1x.place(x = 0, y = 40) btnsqr = Button(window, text="**2", width=4,bg="orange");btnsqr.place(x = 40, y = 40) btnsqrt = Button(window, text="**0.5", width=4,bg="orange");btnsqrt.place(x = 80, y = 40) btnplus = Button(window, text="+",width=4,bg="orange",command=pressplus);btnplus.place(x = 120, y = 40) btnminus = Button(window, text="-",width=4,bg="orange");btnminus.place(x = 120, y = 70) btnmult = Button(window, text="*",width=4,bg="orange");btnmult.place(x = 120, y = 100) btndiv = Button(window, text="/",width=4,bg="orange");btndiv.place(x = 120, y = 130) btn_divv = Button(window, text="//",width=4,bg="orange");btn_divv.place(x = 120, y = 160) btn_dot = Button(window, text=".",width=4,bg="yellow",command=pressdot) btn_dot.place(x = 80, y = 160) btn_back = Button(window, text="<<--",width=4,bg="green",command=pressback);btn_back.place(x = 160, y = 40) btn_c = Button(window, text="CE",width=4,bg="red",command=pressce);btn_c.place(x = 160, y = 70) btnmod = Button(window, text="x**y",width=4,bg="orange");btnmod.place(x = 160, y = 100) btndiv = Button(window, text="%",width=4,bg="orange");btndiv.place(x = 160, y = 130) btneq = Button(window, text="=",width=4,bg="blue",command=presseq);btneq.place(x = 160, y = 160) window.mainloop()
- Полезные ссылки
| Пн | Вт | Ср | Чт | Пт | Сб | Вс |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Как создать калькулятор в python с интерфейсом


Разработка калькулятора на языке программирования Python.
Полищук Владимир Владиславович 1
1 Муниципальное бюджетное общеобразовательное учреждение гимназия №6 имени дважды Героя Советского Союза Д.А. Драгунского
Колдоркина Ольга Александровна 1
1 Муниципальное бюджетное общеобразовательное учреждение гимназия №6 имени дважды Героя Советского Союза Д.А. Драгунского

Автор работы награжден дипломом победителя II степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Калькулятор – это специализированная программа, которая необходима для выполнения операций над числами или алгебраическими формулами. Не все калькуляторы удобны и красивы. Я решил разработать свой калькулятор, который будет удобен и понятен для всех, кому нужно быстро сделать простые вычисления.
Цель проекта: разработать калькулятор для ускорения подсчета выражений индивидуальным пользователем.
Составить шаблон (основу) и спроектировать основные элементы программы.
Устранить ошибки и исправить недочеты программы.
Доработать программу и добавить дополнительные функции.
Основная часть
2.1 Импортирование модулей
Для начала нам нужно импортировать нужные нам модули и библиотеки. Библиотека tkinter – основная для нашей программы, потому что с её помощью и создаётся весь интерфейс калькулятора. Messagebox нужен для показа всплывающих уведомлений, а math для различных выражений с числами. ( см. приложение 1 )
Всё что нам нужно мы импортировали. Теперь можно писать код.
__ init __
В этой функции программа создаёт основные для её работы объекты: все переменные, которые нам нужны, все кнопки и поля ввода, задаёт элементам параметры и запускает другие функции, нужные для старта программы. Так же в этой функции задаётся размер окна, минимальный размер окна, заголовок окна, цвет заднего фона и прочие параметры. Весь этот процесс называется инициализацией. (см. приложение 2)
Функции, нужные для изменения поля ввода
add _ number (цифра)
Эта функция вызывается при нажатии на кнопки цифр от 0 до 9. Она не просто добавляет цифры в конец строки ввода, но и проверяет, можно ли их добавить и соблюдаются ли для этого определённые условия. Например, при нажатии на цифру мы проверяем, равно ли всё что находится в поле ввода нулю, и если это так, то перед добавлением цифры мы очищаем поле ввода. (см. приложение 3)
add_operation (операция)
Функция работает на подобии предыдущей, но добавляет не цифры, а знаки операций (плюс, минус, умножение, деление), и у этой функции тоже есть ряд условий, которые в свою очередь, отличаются от условий добавление цифр. Так как при добавлении операции мы переносим число наверх, в поле где находится наш пример целиком, мы должны привести число в привычное для нас состояние. Например, эта функция при нажатии на любую кнопку операции, заменит 0.; -0; 0.0; -0.0 на 0, ведь эти все числа абсолютно не отличаются, но понятнее всего они станут для человека в виде нуля. (см. приложение 4)
По названию можно понять, для чего нужна эта функция. Она просто считает весь готовый пример и возвращает ответ. Но даже здесь есть условия, при которых она не работает так, как должна. Самый простой и понятный пример – деление на ноль. Если оно есть в примере, функция использует ранее импортированный модуль messagebox для сообщения пользователю о том, что данный пример нельзя посчитать, так как на ноль делить нельзя. (см. приложение 5)
Эта функция работает намного проще предыдущих, да и размер её не особо большой, всего 7 строк. Тут и объяснять то нечего, она просто заменяет весь написанный текст в поле ввода на 0 – очищает весь пример. (см. приложение 6)
change _ sign
Функция тоже очень проста. Условия в ней конечно есть, но их всего 2. Одно из условий – функция проверяет: если значение равняется -0, то она заменяет его на 0; если значение равняется 0, то она заменяет его на -0; а в остальных случаях просто умножает число на -1, ведь это простое математическое действие может легко поменять знак у числа на противоположный, даже не зная его, а условие для 0 и -0 нужны, потому что программа умножив эти числа на -1 заменит их на 0, и не добавит минус. (см. приложение 7)
Функция проще предыдущей, потому что высчитать один процент от числа не составит труда даже человеку, не то что компьютеру. Функция просто делит число на экране на 100. (см. приложение 8)
Функция тоже очень простая, и не имеет никаких условий, а просто проверяет, есть ли запятая в числе. Если да, то она ничего не делает, а если нет, то добавляет запятую в конец числа. (см. приложение 9)
Функция стирает последнюю цифру числа, если оно не равно 0 или -0, также если длина числа составляет 1 символ, то заменяет его на 0. (см. приложение 10)
on _ press (клавиша)
Эта функция нужна для связи всех вышеперечисленных функций с клавиатурой, чтобы можно было управлять калькулятором, даже не используя мышку. (см. приложение 11)
Функции, нужные для изменения интерфейса программы и её элементов
Когда я только начинал делать калькулятор, мне показалось скучным сделать стандартную программу, которая будет уметь только выполнять простейшие операции над числами. И я решил добавить меню. Это меню открывается и закрывается по нажатии на кнопку, и имеет в себе 3 кнопки с разными функциями, о которых я расскажу позже. (см. приложение 12)
Эта функция отвечает за открытие и закрытие настроек программы и срабатывает при нажатии на первую кнопку меню. Пока что там есть только одна кнопка – смена темы, но в будущем я буду добавлять туда другие фишки. (см. приложение 13)
Я создал эту функцию, потому что в процессе разработки столкнулся с проблемой, что весь текст в кнопках не менял свои размеры, а кнопки становились больше, и это всё выглядело некрасиво: кнопка огромная, а текст еле видно. Функция решает эту проблему. При изменении размеров окна, она проверяет, равняется ли значение по ширине или высоте определённому количеству пикселей (все значения прописаны в функции), и меняет размер текста, впоследствии перезагружая текст на всех кнопках чтобы изменения были видны. Также она подстраивает кнопки памяти ( m +, m -, mr , mc ) в соответствии с размером окна. (см. приложение 14)
change_theme
Эта функция используется в настройках, и отвечает за смену темы калькулятора с белой на чёрную и наоборот. Она меняет цвет всех кнопок, звет заднего фона программы и цвет полей ввода, затем перезагружает весь интерфейс. (см. приложение 15)
button_colors( кнопка , тип кнопки )
Я сделал эту функцию для установки цветов кнопкам в зависимости от темы и типа кнопок. Типов кнопок всего 5: для кнопок цифр, для кнопок операций, для кнопки равно, для кнопки, на которую нельзя нажать и для кнопки выхода (красная кнопка, кнопка, которая горит красным при наведении) (см. приложение 16)
button _ colors _ reload
Эта функция особо ничего не делает, она сделана для упрощения перезагрузки цветов всех кнопок просто её вызовом. (см. приложение 17)
buttons _ reload
Эта функция используется в функции on _ scale и перезагружает весь текст на кнопках. (см. приложение 18)
Главная функция, которая запускается в функциях __ init __ и change _ theme . Она вызывает две предыдущих функции, а так же загружает заново все цвета элементов в зависимости от темы. (см. приложение 19)
Функция переключает полноэкранный режим. Если он включен, то выключает его, а если выключен, включает. (см. приложение 20)
copy _ entry _ text
Функция копирует число, которое мы ввели в буфер обмена, когда пользователь нажмёт на нужную кнопку. (см. приложение 21)
m (параметр)
Эта функция выполняется при нажатии на сразу четыре кнопки, и отвечает за добавление, очистку и вставку в поле ввода числа из встроенной памяти калькулятора. (см. приложение 22)
Функция показывает кнопку для копирования текста в поле ввода при нажатии на него. (см. приложение 23)
exit (код=0)
Эта функция вызывается при нажатии на третью кнопку меню, и используется для завершения работы калькулятора. Пока что она ничего кроме этого не делает, но в будущем может понадобиться сохранять какие-то данные перед выходом, и это будет проще сделать в уже готовой функции. (см. приложение 24)
translate (текст, значение[1 или -1]
У программы и человека немного отличаются обозначения, эта функция “переводит” эти значения для связи между тем, что видим мы, и тем, что видит программа. Она заменяет привычную для нас запятую на точку, знак умножения в виде крестика на звёздочку (*), а знак деления на косую черту (/), ведь именно так компьютер может понять, что это за знаки. Значение 1 переводит значения так, чтобы они были понятны для компьютера, а значение -1 – чтобы мы видели красивые и понятные значки. (см. приложение 25)
В языке программирования python есть небольшая особенность у операции деления: если ты делишь одно число на другое, не важно, кратно ли оно или нет, тебе выдвдут число с плавающей точкой, или же число с запятой, то есть если ты поделишь 5 на 2, как и должно, ты получишь 2,5. Но если ты поделишь 6 на 2, ты получишь 3,0 вместо 3. Эта функция исправляет такой недочёт, чтобы числа на экране были понятнее. (см. приложение 26)
2.3 Интерфейс
При запуске программы мы сразу видим привычный нам калькулятор. На нем указаны цифры и операции: умножения, деления, сложения, вычитания, проценты, смена зкака числа (положительное или отрицательное), десятичная запятая, кнопки памяти и меню для выбора настроек калькулятора. (см. приложение 27)
Цвет кнопок меняется автоматически при наведении и нажатии на них – наведение: (см.приложение 28), нажатие: (см.приложение 29).
В глаза сразу бросается кнопка меню в левом верхнем углу. Если на неё нажать, откроется главное меню программы (см. приложение 30)
В меню есть 3 кнопки: настройки, полноэкранный режим и кнопка закрытия программы.
Открываем натройки ( settings ): (см. приложение 31)
Видим кнопку смены темы, в данный момент она светлая ( light ). Если мы нажмём на неё, то она станет темной ( dark ) (см. приложение 32)
Также можно включить полноэкранный режим ( fullscreen ): (см. приложение 33)
Так выглядит калькулятор в полноэкранном режиме (см. приложение 34)
Вернемся в главный экран, нажав снова на кнопку меню в левом верхнем углу. Можно делать вычисления сразу всего примера, при этом будет соблюдаться последовательность действий. Например, действия в сложения и вычитания будут выполняться после действий умножения и деления (см. приложение 35)
Ошибки тоже обрабатываются. Программа при этом не выключается, а выдает ползователю сообщения об ошибках. Например, если поделить на ноль, он сообщит об этом (см. приложение 36)
Все элементы подстраиваются под размер окна. Так как размеры приложения можно изменять мышкой, потянув за края окна, то символы тоже будут изменять свой размер, подстраиваясь по размеру (см. приложение 37)
3. Заключение
Данный проект – Калькулятор, позволяет пользователям выполнять операции над числами в удобном инрерфейсе, который можно настраивать индивидуально.
4. Список использованных источников и литературы:
1. Майкл Доусон “Программируем на Python ”, Питер, 2019 год, 416 страниц.
2. Алекс Мартелли, Анна Рейвенскрофт, Стив Холден “ Python справочник”, Москва, 2018 год, 896 страниц.
#9 - Создание калькулятора (Дизайн)

Начиная с этого урока мы приступаем к созданию полноценного калькулятора в Qt Creator на C++. Мы создадим весь дизайн, а также все функции калькулятора и в итоге у нас получится готовая программа.
Видеоурок
Начиная с этого урока мы приступаем к созданию полноценного калькулятора на C++ при помощи фреймворка Qt Creator. Мы создадим весь дизайн, а также все функции калькулятора. Мы научимся добавлять сигналы и слоты не только в автоматическом режиме, но и в ручном при помощи написания кода.
В итоге у нас получиться калькулятор как на фото ниже:
