Пишем программу «Арифметический калькулятор» с графическим интерфейсом.  Используем графическую библиотеку tkinter. 

Сначала, в интерпретаторе командной строки Python shell выполните несколько Арифметический операций.

Скрин. 1.

Оказывается, Python, сам по себе, является хорошим и, в то же время, уникальным калькулятором.

Теперь, напишем программу «Калькулятор» с интерфейсом командной строки. 

s = input()
print(s)

Лист. 1.

В программе листинг 1 функция input() приостанавливает работу программы в ожидании ввода строки с клавиатуры. Пользователь заканчиват ввод строки нажатием на клавишу «Enter» (Ввод). Функция input() возвращает, введённую пользователем строку в программу. В нашей программе, листинг 1, строка, введённая пользователем, сохраняется в переменной s. Точнее будет сказать, переменная s получает ссылку на эту строку.

В следующей строке программы, функция print() осуществляет ввод строки, введённой пользователем в командную строку Python

s = input("Введите математическое выражение: ")
print(s, ' = ', eval(s))

Лист. 2.

while(True):
    s = input("Введите математическое выражение: ")
    print(s, ' = ', eval(s))

Лист. 3.

from tkinter import *

tk = Tk()
lbl=Label()
lbl.pack()
s = '2**8'
lbl.config(text=s+' = '+str(eval(s)))

mainloop()

Лист. 4.

from tkinter import *

tk = Tk()
lbl=Label()
lbl.pack()
s = '2**8'
lbl.config(text=s+' = '+str(eval(s)))
btn=[]
frm=[Frame(), Frame(), Frame(), Frame()]
for i in frm:
    i.pack(expand=YES, fill=BOTH)
    btn += [Button(i), Button(i), Button(i), Button(i)]
for i in btn:
    i.pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()

Лист. 5.

from tkinter import *

tk = Tk()
lbl=Label()
lbl.pack()
s = '2**8'
lbl.config(text=s+' = '+str(eval(s)))
btn=[]
frm=[Frame(), Frame(), Frame(), Frame()]
for i in frm:
    i.pack(expand=YES, fill=BOTH)
    btn += [Button(i), Button(i), Button(i), Button(i)]
for i in range(len(btn)):
    btn[i].pack(expand=YES, fill=BOTH, side=LEFT)
    btn[i].config(text='+', font=('mono', 30, 'bold'), width=3, height=2)

mainloop()

Лист. 6.

from tkinter import *

key = '+-/*123←456=7890'

tk = Tk()
lbl=Label()
lbl.pack()
s = '2**8'
lbl.config(text=s+' = '+str(eval(s)))
btn=[]
frm=[Frame(), Frame(), Frame(), Frame()]
for i in frm:
    i.pack(expand=YES, fill=BOTH)
    btn += [Button(i), Button(i), Button(i), Button(i)]
for i in range(len(btn)):
    btn[i].pack(expand=YES, fill=BOTH, side=LEFT)
    btn[i].config(text=key[i], font=('mono', 30, 'bold'), width=3, height=2)

mainloop()

Лист. 7.

from tkinter import *

key = '+-/*123←456=7890'
s = ''
def mathExpr(n):
    global s
    s += n
    lbl.config(text=s)

tk = Tk()
lbl=Label()
lbl.pack()
btn=[]
frm=[Frame(), Frame(), Frame(), Frame()]
for i in frm:
    i.pack(expand=YES, fill=BOTH)
    btn += [Button(i), Button(i), Button(i), Button(i)]
for i in range(len(btn)):
    btn[i].pack(expand=YES, fill=BOTH, side=LEFT)
    btn[i].config(text=key[i], font=('mono', 30, 'bold'), width=3, height=2)
    btn[i].config(command=lambda n=i : mathExpr(key[n]))

mainloop()

Лист. 8.

from tkinter import *

key = '+-/*123←456=7890'
s = ''
def mathExpr(n):
    global s
    if ord(n) == 61:
        lbl.config(text=s+' = '+str(eval(s)))
        s = ''
    elif ord(n) == 8592:
        s = s[0:-1]
        lbl.config(text=s)
    else:
        s += n
        lbl.config(text=s)

tk = Tk()
lbl=Label()
lbl.pack()
btn=[]
frm=[Frame(), Frame(), Frame(), Frame()]
for i in frm:
    i.pack(expand=YES, fill=BOTH)
    btn += [Button(i), Button(i), Button(i), Button(i)]
for i in range(len(btn)):
    btn[i].pack(expand=YES, fill=BOTH, side=LEFT)
    btn[i].config(text=key[i], font=('mono', 30, 'bold'), width=3, height=2)
    btn[i].config(command=lambda n=i : mathExpr(key[n]))

mainloop()

Лист. 9. 

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

column = 4                          # столбцы
row = 4                             # строки
btn = []                            # список кнопок
key = '+-/*123←456=7890'
s = ''

def play(n):                        # функция обработчик нажатия на кнопку
    global s
    if n == 11:
        s = str(eval(s))
    elif n == 7:
        s = s[0:-1]
    else:
        s += key[n]
    msg.config(text=s)

msg = Message(width=500, font =("mono", 16, "bold"))
msg.pack(expand=YES, fill= BOTH)
for i in range(row):
    f = Frame()
    f.pack(expand=YES, fill=BOTH)
    for j in range(column):
        btn += [Button(f, font =("mono", 16, "bold"), width = 5, height=3)]
        btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)
        btn[-1].config(text = key[i*column+j], command=lambda n=i*column+j:play(n))

mainloop()

Лист. 1.

Лист. 1.