Калькулятор
Многие программисты стараются изучать языки программирования с помощью написания достаточно простых программ. Один из вариантов – написание калькулятора. Конечно, можно посчитать в отладчике Python или запустив консоль. Но гораздо лучше написать на python свой калькулятор с графическим интерфейсом.
Считаем в консоле
Чтобы посчитать математические выражения можно запустить консоль. Запустить python. После этого набираем математические выражения и получаем ответ. Для этого даже не надо уметь программировать.

Делаем простой калькулятор
Лучше всего закреплять свои знания по программированию с помощью написания простых программ. Таких приложений можно придумать много – календарь, программа для хранения заметок, получение прогноза погоды.

Можно написать программу, которая делает скриншоты и сохраняет полученные изображения в папку. В любом случае, надо выбрать какое-нибудь не сложное задание, чтобы не закопаться в нем. Потом его можно будет расширить и сделать по-настоящему полезное приложение.
В нашем случае мы разберем, как создать простой графический калькулятор на Python 3. Для реализации графического интерфейса воспользуемся стандартным пакетом Tkinter. Он входит в состав Python 3. Соответственно, если у вас установлен Python, то дополнительно не надо ничего устанавливать.
В первых строках файла calculator.py подключаем библиотечные функции:
- Tkinter для графического интерфейса;
- Decimal для вычислений с большей точность, так как точности float не достаточно.
Импорт библиотек и исходные данные
Создаем окно приложения — объект Tk с заголовком Calculator. Во вложенном кортеже buttons будут храниться обозначения для кнопок. В список stack будем добавлять введенные числа и операции, которые надо совершить. activeStr предназначен для хранения набираемого числа.
from tkinter import * from decimal import * root = Tk() root.title('Calculator') buttons = (('7', '8', '9', '/', '4'), ('4', '5', '6', '*', '4'), ('1', '2', '3', '-', '4'), ('0', '.', '=', '+', '4') ) activeStr = '' stack = []
Вычисление результата
Функция calculate получает из списка stack операнды и операцию которую над ними надо произвести. Результат отображается в надписи label. Получать из списка строки будем с помощью метода pop.
def calculate(): global stack global label result = 0 operand2 = Decimal(stack.pop()) operation = stack.pop() operand1 = Decimal(stack.pop()) if operation == '+': result = operand1 + operand2 if operation == '-': result = operand1 - operand2 if operation == '/': result = operand1 / operand2 if operation == '*': result = operand1 * operand2 label.configure(text=str(result))
Обработка нажатия
В функции click выполняется обработка нажатой клавиши. В качестве ее аргумента передается текст, отображаемый на кнопке, которую нажали. Хотелось бы хранить вводимое значение прямо в надписи, а не создавать для этого отдельную переменную. Но так не получается из-за алгоритма работы. После того как посчитан результат, он записывается в надписи. При попытке после этого начать вводить новое число, оно бы дописывало прежний результат.
В списке с операторами и командами для калькулятора не обязательно их будет 3. Но при обработке с помощью метода pop, будут рассматриваться 3 последних введенных значения. А после проведения расчета список очистится. Далее в него добавляется полученный результат, на случай если пользователь нажмет на калькуляторе клавишу операции сразу, а не будет вводить новое число.
def click(text): global activeStr global stack if text == 'CE': stack.clear() activeStr = '' label.configure(text='0') elif '0' = 2: stack.append(label['text']) calculate() stack.clear() stack.append(label['text']) activeStr = '' if text != '=': stack.append(text) else: if text != '=': stack.append(label['text']) stack.append(text) activeStr = '' label.configure(text='0')
Внешний вид
Теперь займемся оформлением внешнего вида калькулятора и зададим обработку нажатия кнопок. Создаем надпись для вывода набираемых значений и результатов. В цикле создаем кнопки. Расположение кнопок и надписи осуществляется в табличном виде с помощью упаковщика grid. И в завершении запускаем цикл обработки событий mainloop.
label = Label(root, text='0', width=35) label.grid(row=0, column=0, columnspan=4, sticky="nsew") button = Button(root, text='CE', command=lambda text='CE': click(text)) button.grid(row=1, column=3, sticky="nsew") for row in range(4): for col in range(4): button = Button(root, text=buttons[row][col], command=lambda row=row, col=col: click(buttons[row][col])) button.grid(row=row + 2, column=col, sticky="nsew") root.grid_rowconfigure(6, weight=1) root.grid_columnconfigure(4, weight=1) root.mainloop()
У надписи выставлена ширина 35, для того, чтобы оформление кнопок подстраивалось под надпись. И в результате кнопки при этом значении лучше выглядят.
Для того, чтобы кнопки правильно работали, пришлось для каждой из кнопок создать свою функцию с помощью lambda.
По аналогии приведенного кода python калькулятора можно сдель, допустим, календарь. Для этого надо будет запрашивать текущую дату у операционной системы. Открывать нужный месяц, рассчитывать какие числа выпадут на понедельники, какой год високосный. Сделать возможность менять год и месяцы.
Калькулятор с графическим интерфейсом с помощью tkinter
Сначало всё по стандарту. Импортируем библиотеки. Использовать мы будем сам tkinter и библиотеку математических функций math.
from tkinter import * from tkinter import messagebox import math
Далее задаем функции кнопок.(Я пару шагов пропустил, точнее написал после, но калькулятор от этого не сломается.):
def add_digit(digit): value = calc.get() if value[0]=='0' and len(value)==1: value = value[1:] calc.delete(0, END) calc.insert(0, value + digit) def add_operation(operation): value = calc.get() if value[-1] in '-+/*': value = value[:-1] elif '+' in value or '-' in value or'*' in value or'/' in value: calculate() value = calc.get() calc.delete(0, END) calc.insert(0, value + operation) def calculate(): value = calc.get() if value[-1] in '-+/*': value = value+value[:-1] calc.delete(0, END) try: calc.insert(0, eval(value)) except (NameError, SyntaxError): messagebox.showerror('Внимание!', 'Нужно вводить только числа и цифры!') calc.insert(0, 0) except ZeroDivisionError: messagebox.showerror('Внимание!', 'На ноль делить нельзя!') calc.insert(0, 0) def add_sqrt(): value = calc.get() value = float(value) value = math.sqrt(value) calc.delete(0, END) calc.insert(0, value) def add_fabs(): value = calc.get() value = eval(value) value = math.fabs(value) calc.delete(0, END) calc.insert(0, value) def clear(): calc.delete(0, END) calc.insert(0, 0) def make_calc_button(operation): return Button(text=operation, bd=5, font=('Times New Roman', 13), command=calculate) def make_clear_button(operation): return Button(text=operation, bd=5, font=('Times New Roman', 13), command=clear) def make_operation_button(operation): return Button(text=operation, bd=5, font=('Times New Roman', 13), command=lambda : add_operation(operation)) def make_sqrt_button(operation): return Button(text=operation, image=img, bd=5, font=('Times New Roman', 13), command=add_sqrt) def make_fabs_button(operation): return Button(text=operation, bd=5, font=('Times New Roman', 13), command=add_fabs) def make_digit_button(digit): return Button(text=digit, bd=5, font=('Times New Roman', 13), command=lambda : add_digit(digit))
Теперь создаём окно, в котором будет наш пример и ответ.
tk=Tk() tk.geometry('260x360+100+200') tk.resizable(0,0) tk.title("Калькулятор") tk['bg']='#FFC0CB' #Цвет фона - чёрный. Его можно поменять на любой другой.
Если посмотреть на оригинальный калькулятор Виндовс мы увидим, что текст располагается с правой стороны, сделаем также. Для этого в ткинтер используется функция justify :
calc = Entry(tk, justify=RIGHT, font=('Times New Roman', 15), width=15) calc.insert(0, '0') calc.place(x=15, y=20, width=220, height=30)
Следующий шаг прост. Располагаем кнопки.
make_digit_button('1').place(x=20, y=250, width=40, height=40) make_digit_button('2').place(x=80, y=250, width=40, height=40) make_digit_button('3').place(x=140, y=250, width=40, height=40) make_digit_button('4').place(x=20, y=190, width=40, height=40) make_digit_button('5').place(x=80, y=190, width=40, height=40) make_digit_button('6').place(x=140, y=190, width=40, height=40) make_digit_button('7').place(x=20, y=130, width=40, height=40) make_digit_button('8').place(x=80, y=130, width=40, height=40) make_digit_button('9').place(x=140, y=130, width=40, height=40) make_digit_button('0').place(x=20, y=310, width=100, height=40) make_digit_button('.').place(x=140, y=310, width=40, height=40) make_operation_button('+').place(x=200, y=310, width=40, height=40) make_operation_button('-').place(x=200, y=250, width=40, height=40) make_operation_button('*').place(x=200, y=190, width=40, height=40) make_operation_button('/').place(x=200, y=130, width=40, height=40)
В моей задаче было использование картинки в качестве корня, поэтому используем PhotoImage для импортировки фотографии(фотография должна быть в одной папке с кодом)
img=PhotoImage(file='radical.png') make_sqrt_button('').place(x=80, y=70, width=40, height=40)
Последние шаги по мелочам. В качестве дополнительной функции добавим модуль. Кнопку очистки всего и равно добавляем обязательно!
#Модуль числа make_fabs_button('|x|').place(x=140, y=70, width=40, height=40) #Очистка make_clear_button('C').place(x=20, y=70, width=40, height=40) #Равно make_calc_button('=').place(x=200, y=70, width=40, height=40) tk.mainloop()
Полный код выглядит как-то так:
#Бібліотека модулів from tkinter import * from tkinter import messagebox import math def add_digit(digit): value = calc.get() if value[0]=='0' and len(value)==1: value = value[1:] calc.delete(0, END) calc.insert(0, value + digit) def add_operation(operation): value = calc.get() if value[-1] in '-+/*': value = value[:-1] elif '+' in value or '-' in value or'*' in value or'/' in value: calculate() value = calc.get() calc.delete(0, END) calc.insert(0, value + operation) def calculate(): value = calc.get() if value[-1] in '-+/*': value = value+value[:-1] calc.delete(0, END) try: calc.insert(0, eval(value)) except (NameError, SyntaxError): messagebox.showinfo('Внимание!', 'Нужно вводить только числа!') calc.insert(0, 0) except ZeroDivisionError: messagebox.showinfo('Внимание!', 'На ноль делить нельзя!') calc.insert(0, 0) def add_sqrt(): value = calc.get() value = float(value) value = math.sqrt(value) calc.delete(0, END) calc.insert(0, value) def add_fabs(): value = calc.get() value = eval(value) value = math.fabs(value) calc.delete(0, END) calc.insert(0, value) def clear(): calc.delete(0, END) calc.insert(0, 0) def make_calc_button(operation): return Button(text=operation, bd=5, font=('Times New Roman', 13), command=calculate) def make_clear_button(operation): return Button(text=operation, bd=5, font=('Times New Roman', 13), command=clear) def make_operation_button(operation): return Button(text=operation, bd=5, font=('Times New Roman', 13), command=lambda : add_operation(operation)) def make_sqrt_button(operation): return Button(text=operation, image=img, bd=5, font=('Times New Roman', 13), command=add_sqrt) def make_fabs_button(operation): return Button(text=operation, bd=5, font=('Times New Roman', 13), command=add_fabs) def make_digit_button(digit): return Button(text=digit, bd=5, font=('Times New Roman', 13), command=lambda : add_digit(digit)) tk=Tk() tk.geometry('260x360+100+200') tk.resizable(0,0) tk.title("Калькулятор") tk['bg']='#FFC0CB' calc = Entry(tk, justify=RIGHT, font=('Times New Roman', 15), width=15) calc.insert(0, '0') calc.place(x=15, y=20, width=220, height=30) #Числа от 1 до 9 и точка make_digit_button('1').place(x=20, y=250, width=40, height=40) make_digit_button('2').place(x=80, y=250, width=40, height=40) make_digit_button('3').place(x=140, y=250, width=40, height=40) make_digit_button('4').place(x=20, y=190, width=40, height=40) make_digit_button('5').place(x=80, y=190, width=40, height=40) make_digit_button('6').place(x=140, y=190, width=40, height=40) make_digit_button('7').place(x=20, y=130, width=40, height=40) make_digit_button('8').place(x=80, y=130, width=40, height=40) make_digit_button('9').place(x=140, y=130, width=40, height=40) make_digit_button('0').place(x=20, y=310, width=100, height=40) make_digit_button('.').place(x=140, y=310, width=40, height=40) #Основные математические действия make_operation_button('+').place(x=200, y=310, width=40, height=40) make_operation_button('-').place(x=200, y=250, width=40, height=40) make_operation_button('*').place(x=200, y=190, width=40, height=40) make_operation_button('/').place(x=200, y=130, width=40, height=40) #Корень img=PhotoImage(file='radical.png') make_sqrt_button('').place(x=80, y=70, width=40, height=40) #Модуль make_fabs_button('|x|').place(x=140, y=70, width=40, height=40) #Кнопка очистки make_clear_button('C').place(x=20, y=70, width=40, height=40) #Равно make_calc_button('=').place(x=200, y=70, width=40, height=40) tk.mainloop()
Делаем свой кредитный калькулятор на Python
Сегодня поставим Python на практические рельсы — сделаем простой кредитный калькулятор. В приложении будут поля для годовой процентной ставки, срока и суммы кредита, чтобы рассчитывать ежемесячные платежи и общую сумму. В будущем его можно допилить — добавить возможность досрочного погашения, пересчёт процентов и всё остальное.
Если вы ни разу не программировали на Python, почитайте сначала это:
Устанавливаем и подключаем библиотеку
Чтобы создать графический интерфейс нашего кредитного калькулятора, используем библиотеку tkinter. Для этого установим её в систему командой в терминале:
pip install tkinter
Если pip не работает, используйте pip3
pip3 install tkinter

После этого импортируем библиотеку и подключаем её:
from tkinter import *
Мы уже использовали библиотеку tkinter в других проектах, почитайте, если интересно:
Пишем игру на Python
Без донатов!
Делаем своё приложение для ведения бюджета
Базовая версия
Делаем свой загрузчик видео с Ютуба
Независимый и автономный
Рисуем интерфейс
Нашему кредитному калькулятору нужны поля для ввода данных и кнопка, по нажатию которой он будет производить расчёты. Для этого мы нарисуем:
- поле для ввода годовой процентной ставки;
- поле для ввода количества лет в сроке кредита;
- поле для ввода суммы кредита;
- кнопку «Рассчитать».
Получится несложный интерфейс и самый простой калькулятор, но для старта этого достаточно. Разместим эти элементы на форме.
# создаём класс для калькулятора class LoanCalculator: # инициализируем класс def __init__(self): # стартуем tkinter, чтобы создать окно графического интерфейса root=Tk() # задаём размеры окна root.geometry("500x300") # задаём название окна калькулятора root.title("Кредитный калькулятор") # задаём цвет окна калькулятора, например пыльно-серый root.config(bg='#a39ea0') # задаём расположение, стиль шрифта и пояснительный текст для поля годовой процентной ставки Label(root,text="Годовая ставка, %", font=('Arial,15,bold'),bg='#a39ea0').place(x=10,y=10) # задаём расположение, стиль шрифта и пояснительный текст для поля срока кредита Label(root, text="Срок, лет", font=('Arial,15,bold'),bg='#a39ea0').place(x=10,y=50) # задаём расположение, стиль шрифта и пояснительный текст для поля суммы кредита Label(root, text="Сумма кредита", font=('Arial,15,bold'),bg='#a39ea0').place(x=10,y=90) # задаём расположение, стиль шрифта и пояснительный текст для вывода ежемесячного платежа Label(root, text="Ежемесячный платёж:", font=('Arial,15,bold'),bg='#a39ea0').place(x=10,y=150) # задаём расположение, стиль шрифта и пояснительный текст для вывода общей суммы выплаты Label(root, text="Общая сумма выплаты:", font=('Arial,15,bold'),bg='#a39ea0').place(x=10,y=190) # добавляем поле для ввода годовой процентной ставки self.annualinterestVar=StringVar() Entry(root, textvariable=self.annualinterestVar,font=('Arial,15,bold')).place(x=220,y=10) # добавляем поле для ввода количества лет кредит self.numberofyearsVar=StringVar() Entry(root, textvariable=self.numberofyearsVar,font=('Arial,15,bold')).place(x=220,y=50) # добавляем поле для ввода суммы кредита self.loanamountVar=StringVar() Entry(root, textvariable=self.loanamountVar,font=('Arial,15,bold')).place(x=220,y=90) # добавляем строку вывода расчёта ежемесячного платежа self.monthlypaymentVar=StringVar() Label(root, textvariable=self.monthlypaymentVar,font=('Arial,15,bold'),bg='#a39ea0').place(x=220,y=150) # добавляем строку вывода расчёта общей суммы выплаты self.totalpaymentVar=StringVar() Label(root, textvariable=self.totalpaymentVar,font=('Arial,15,bold'),bg='#a39ea0').place(x=220,y=190) # добавляем кнопку, задаём её расположение, надпись и стиль шрифта Button(root, text="Рассчитать",font=('Arial,15,bold'),command=self.calculateloan).place(x=180,y=240) # запускаем окно root.mainloop()
Теперь для запуска проекта нам нужно использовать только что созданный класс, чтобы он сработал и форма появилась на экране. Для этого добавляем команду:
# вызываем класс калькулятора, чтобы запустить программу
LoanCalculator()
Запускаем скрипт и видим готовую форму. Она пока ничего не умеет, но туда уже можно что-то писать:

Программируем расчёты
Чтобы наш калькулятор работал, нужно указать в коде, что программа должна делать с нашими данными.
Определим функцию для расчёта общей суммы выплаты и переменной ежемесячного платежа. Тут мы будем использовать введённые значения годовой процентной ставки, срока и суммы кредита.
общая сумма выплаты = ежемесячный платёж × 12 × срок
В коде мы используем две команды — float и int. Они работают так: float возвращает значения в десятичном формате, а int — целочисленные. Ещё мы используем форматирование вывода: format(10.2f) , так мы получим 10 символов: семь цифр перед запятой, восьмой символ — десятичная и две цифры после неё.
# определяем функцию расчёта общей суммы выплаты def calculateloan(self): # определяем формулу, по которой будет рассчитываться ежемесячный платёж по кредиту monthlypayment=self.getmonthlypayment (float(self.loanamountVar.get()),float(self.annualinterestVar.get()) / 1200, int(self.numberofyearsVar.get())) self.monthlypaymentVar.set(format(monthlypayment, '10.2f')) # определяем формулу, по которой будет рассчитываться общая сумма выплаты по кредиту totalpayment=float(self.monthlypaymentVar.get()) * 12 * int(self.numberofyearsVar.get()) self.totalpaymentVar.set(format(totalpayment, '10.2f'))
Для расчёта ежемесячного платежа используем формулу:
ежемесячный платёж = [сумма кредита × ежемесячная процентная ставка / (1 − 1 / 1 + ежемесячная процентная ставка) ^ количество лет × 12].
# определяем функцию расчёта ежемесячного платежа def getmonthlyPayment(self,loanamount,monthlyinterestrate,numberofyears): # определяем формулу, по которой будет рассчитываться ежемесячный платёж monthlypayment=loanamount * monthlyinterestrate / (1-1 / (1 + monthlyinterestrate) ** (numberofyears * 12)) return monthlypayment
Запускаем калькулятор
Проверим программу в деле: введём конкретные значения во все поля и посмотрим, какой у нас получится ежемесячный платёж и сколько денег нам в итоге придётся заплатить.
Вот что будет на старте до нажатия кнопки «Рассчитать»:

Теперь нажимаем и смотрим на результат:

Что дальше
Этот калькулятор можно доработать, например добавить такие штуки:
- кнопку очистки полей;
- подсчёт переплаты сверх суммы кредита;
- расчёт по месяцам, а не по годам;
- расчёт платежей и остатка при досрочном погашении части кредита.
А самое главное — проверку на правильность введённых данных. Например, чтобы программа сообщала, если мы вместо цифр введём что-то другое, и подсвечивала поля с ошибочными данными.
Попробуйте сделать это сами, мы в вас верим!
Готовый код
# импортируем библиотеку tkinter from tkinter import * # создаём класс для калькулятора class LoanCalculator: # инициализируем класс def __init__(self): # стартуем tkinter, чтобы создать окно графического интерфейса root=Tk() # задаём размеры окна root.geometry("500x300") # задаём название окна калькулятора root.title("Кредитный калькулятор") # задаём цвет окна калькулятора, например пыльно-серый root.config(bg='#a39ea0') # задаём расположение, стиль шрифта и пояснительный текст для поля годовой процентной ставки Label(root,text="Годовая ставка, %", font=('Arial,15,bold'),bg='#a39ea0').place(x=10,y=10) # задаём расположение, стиль шрифта и пояснительный текст для поля срока кредита Label(root, text="Срок, лет", font=('Arial,15,bold'),bg='#a39ea0').place(x=10,y=50) # задаём расположение, стиль шрифта и пояснительный текст для поля суммы кредита Label(root, text="Сумма кредита", font=('Arial,15,bold'),bg='#a39ea0').place(x=10,y=90) # задаём расположение, стиль шрифта и пояснительный текст для вывода ежемесячного платежа Label(root, text="Ежемесячный платёж:", font=('Arial,15,bold'),bg='#a39ea0').place(x=10,y=150) # задаём расположение, стиль шрифта и пояснительный текст для вывода общей суммы выплаты Label(root, text="Общая сумма выплаты:", font=('Arial,15,bold'),bg='#a39ea0').place(x=10,y=190) # добавляем поле для ввода годовой процентной ставки self.annualinterestVar=StringVar() Entry(root, textvariable=self.annualinterestVar,font=('Arial,15,bold')).place(x=220,y=10) # добавляем поле для ввода количества лет кредит self.numberofyearsVar=StringVar() Entry(root, textvariable=self.numberofyearsVar,font=('Arial,15,bold')).place(x=220,y=50) # добавляем поле для ввода суммы кредита self.loanamountVar=StringVar() Entry(root, textvariable=self.loanamountVar,font=('Arial,15,bold')).place(x=220,y=90) # добавляем строку вывода расчёта ежемесячного платежа self.monthlypaymentVar=StringVar() Label(root, textvariable=self.monthlypaymentVar,font=('Arial,15,bold'),bg='#a39ea0').place(x=220,y=150) # добавляем строку вывода расчёта общей суммы выплаты self.totalpaymentVar=StringVar() Label(root, textvariable=self.totalpaymentVar,font=('Arial,15,bold'),bg='#a39ea0').place(x=220,y=190) # добавляем кнопку, задаём её расположение, надпись и стиль шрифта Button(root, text="Рассчитать",font=('Arial,15,bold'),command=self.calculateloan).place(x=180,y=240) # запускаем окно root.mainloop() # определяем функцию расчёта общей суммы выплаты def calculateloan(self): # определяем формулу, по которой будет рассчитываться ежемесячный платёж по кредиту monthlypayment=self.getmonthlypayment (float(self.loanamountVar.get()),float(self.annualinterestVar.get()) / 1200, int(self.numberofyearsVar.get())) self.monthlypaymentVar.set(format(monthlypayment, '10.2f')) # определяем формулу, по которой будет рассчитываться общая сумма выплаты по кредиту totalpayment=float(self.monthlypaymentVar.get()) * 12 * int(self.numberofyearsVar.get()) self.totalpaymentVar.set(format(totalpayment, '10.2f')) # определяем функцию расчёта ежемесячного платежа def getmonthlyPayment(self,loanamount,monthlyinterestrate,numberofyears): # определяем формулу, по которой будет рассчитываться ежемесячный платёж monthlypayment=loanamount * monthlyinterestrate / (1-1 / (1 + monthlyinterestrate) ** (numberofyears * 12)) return monthlypayment # вызываем класс калькулятора, чтобы запустить программу LoanCalculator()
Простой калькулятор с графическим интерфейсом

Не могу разобраться как написать программу в которой нужно сделать текстовыми полями (Text), 4 переключателя Radiobutton и кнопкой button. В текстовые поля записываются 2 числа по нажатию на кнопку появляется сообщение в котором написана сумма, разность, произведение, частное двух чисел, в текстовые поля в зависимости от активного переключателя.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Калькулятор с графическим интерфейсом
Напишите программу «Полноценный калькулятор» с графическим пользовательским интерфейсом на PyQT. .
Арифмометр с графическим интерфейсом
Напишите программу «Арифмометр» с графическим пользовательским интерфейсом на PyQT. На форме.

Разработать программу с графическим интерфейсом
Разработать программу со следующим графическим интерфейсом, предусмотреть обработку возможных.
Напишите программу с графическим пользовательским интерфейсом
Условия задачи: Напишите программу с графическим пользовательским интерфейсом на PyQT. При старте.
40 / 42 / 16
Регистрация: 15.01.2021
Сообщений: 432
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
from tkinter import * class Main(Frame): def __init__(self, root): super(Main, self).__init__(root) self.build() def build(self): self.formula = "0" self.lbl = Label(text=self.formula, font=("Times New Roman", 21, "bold"), bg="#000", foreground="#FFF") self.lbl.place(x=11, y=50) btns = [ "C", "DEL", "*", "=", "1", "2", "3", "/", "4", "5", "6", "+", "7", "8", "9", "-", "(", "0", ")", "X^2" ] x = 10 y = 140 for bt in btns: com = lambda x=bt: self.logicalc(x) Button(text=bt, bg="#FFF", font=("Times New Roman", 15), command=com).place(x=x, y=y, width=115, height=79) x += 117 if x > 400: x = 10 y += 81 def logicalc(self, operation): if operation == "C": self.formula = "" elif operation == "DEL": self.formula = self.formula[0:-1] elif operation == "X^2": self.formula = str((eval(self.formula))**2) elif operation == "=": self.formula = str(eval(self.formula)) else: if self.formula == "0": self.formula = "" self.formula += operation self.update() def update(self): if self.formula == "": self.formula = "0" self.lbl.configure(text=self.formula) if __name__ == '__main__': root = Tk() root["bg"] = "#000" root.geometry("485x550+200+200") root.title("Калькулятор") root.resizable(False, False) app = Main(root) app.pack() root.mainloop()
код не мой, я его просто давно скопировал, и у меня лежит. Источник не помню
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Python программа c графическим интерфейсом для Ubuntu
Подскажите пожалуйста, как делаются Python-программы c графическим интерфейсом для Ubuntu? Какие.
Напишите программу с графическим интерфейсом
Напишите программу с графическим интерфейсом. В окне программы должна располагаться надпись: “ВЫ.
Шифрование с графическим интерфейсом в tkinter
Добрый день! Моя задача: основное окно — набор кнопок с выбором нужной функции для кодирования.
Написать приложение с графическим интерфейсом
Если говорить кратко , нужно писать программу , а точнее графический интерфейс по заданию в файле.

Создать программу парсер с графическим интерфейсом
Здравствуйте. Суть программы в том, что она будет брать информацию с сайтов посвященных.
Или воспользуйтесь поиском по форуму: