python简易计算器

img


谢谢各位!
阿里嘎多
thank you
康萨哈密达
阔步昆
梅河西
感谢

完美复刻

img

from tkinter import *

def add():
    a = eval(num_a.get())
    b = eval(num_b.get())
    result.set(a+b)

def minus():
    a = eval(num_a.get())
    b = eval(num_b.get())
    result.set(a-b)

def mul():
    a = eval(num_a.get())
    b = eval(num_b.get())
    result.set(a*b)

def dev():
    a = eval(num_a.get())
    b = eval(num_b.get())
    result.set(a/b)

def delete():
    num_a.set('')
    num_b.set('')
    result.set('')


root = Tk()
root.title('简易计算器')
root.geometry=('300x200')
root.resizable(0,0)

Label(root, text='First Number:').grid(row=0,columnspan=3)
num_a = StringVar()
Entry(root, width=30,textvariable=num_a).grid(row=1,column=1)
btn_add = Button(root,text='+',width=2,command=add).grid(row=1,column=4)
Label(root,text='Second Number:').grid(row=2,columnspan=3)
btn_minus = Button(root,text='-',width=2,command=minus).grid(row=2,column=4)
num_b = StringVar()
Entry(root, width=30,textvariable=num_b).grid(row=3,column=1)
btn_mul = Button(root,text='*',width=2,command=mul).grid(row=3,column=4)
Label(root,text='Result:').grid(row=4,columnspan=3)
btn_dev = Button(root,text='/',width=2,command=dev).grid(row=4,column=4)
result = StringVar()
Entry(root,width=30,textvariable=result).grid(row=5,column=1)
btn_del = Button(root,text='del',command=delete).grid(row=5,column=4)

root.mainloop()

可以参考

import tkinter as tk

def create_btn(text,col,row,cs,rs,px=(1,1),py=(1,1)):   #函数生成按钮
    t=text
    t=t.replace('×','*')
    t=t.replace('÷','/')
    t=t.replace('x²','**2')
    t=t.replace('1/x','**(-1)')
    a=tk.Button(root,text=text,width=4,command=lambda:(text_print(t)))
    a.grid(column=col,row=row,columnspan=cs,rowspan=rs,padx=px,pady=py,sticky='nswe')
    return(a)

def grid_rowconfigure(*rows):   #函数填充行
    for i in rows:
        root.grid_rowconfigure(i,weight=1)
        
def grid_columnconfigure(*cols):    #函数填充列
    for i in cols:
        root.grid_columnconfigure(i,weight=1)

def bind_print(event):  #函数键盘事件输入算式
    global textchange,equal_is
    if event.keysym!='Return':
        if event.keysym=='BackSpace':
            a=str(textchange)[0:-1]
            textchange=a
        elif event.keysym=='Delete':
            textchange=''
        else:
            textchange=str(textchange)+str(event.char)
        la.configure(text=textchange)
        show_is()
        equal_is=False
    else:
        text_equal()

def text_print(x):  #函数按钮输入算式
    global textchange,equal_is
    if x!='=':
        if x=='←':
            a=str(textchange)[0:-1]
            textchange=a
        elif x=='C':
            textchange=''
        else:
            textchange=str(textchange)+str(x)
        la.configure(text=textchange)
        show_is()
        equal_is=False
    if x=='=':
        text_equal()
    
def text_equal(event=None):   #函数计算结果并上到输入框
    global textchange,equal_is
    if lab['text']!='错误' and equal_is==False:
        textchange=lab['text']
        la.configure(text=textchange)
        lab.configure(text='')
        equal_is=True

def show_is():     #显示框内容
    global textchange
    if textchange!='':
        try:
            textshow=eval(textchange)
        except (SyntaxError,TypeError,NameError):
            lab.configure(text='错误')
        else:
            lab.configure(text=textshow)
    else:
        lab.configure(text='')

root=tk.Tk()        #创建窗体
root.geometry('250x350')
root.title('计算器')
root.bind('<Key>',bind_print)

equal_is=False      #一些变量
textchange=''

la=tk.Label(root,text='',bg='white',fg='black',font=('宋体',24),anchor='w',relief='flat')  #生成输入框
la.grid(column=0,row=0,columnspan=5,rowspan=1,sticky='we')

lab=tk.Label(root,bg='white',fg='grey',height=1,font=('宋体',22),anchor='w',relief='flat')    #生成显示框
lab.grid(column=0,row=1,columnspan=5,rowspan=1,sticky='we')

btn={}                                  #生成按钮
btn['1']=create_btn('1',0,5,1,1)
btn['2']=create_btn('2',1,5,1,1)
btn['3']=create_btn('3',2,5,1,1)
btn['4']=create_btn('4',0,4,1,1)
btn['5']=create_btn('5',1,4,1,1)
btn['6']=create_btn('6',2,4,1,1)
btn['7']=create_btn('7',0,3,1,1)
btn['8']=create_btn('8',1,3,1,1)
btn['9']=create_btn('9',2,3,1,1)
btn['0']=create_btn('0',0,6,2,1)

btn['.']=create_btn('.',2,6,1,1)
btn['=']=create_btn('=',4,5,1,2)
btn['+']=create_btn('+',3,6,1,1)
btn['-']=create_btn('-',3,5,1,1)
btn['*']=create_btn('×',3,4,1,1)
btn['/']=create_btn('÷',4,4,1,1)
btn['←']=create_btn('←',1,2,1,1)

btn['C']=create_btn('C',2,2,1,1)
btn['(']=create_btn('(',3,2,1,1)
btn[')']=create_btn(')',4,2,1,1)
btn['**2']=create_btn('x²',3,3,1,1)
btn['**(-1)']=create_btn('1/x',4,3,1,1)

grid_rowconfigure(2,3,4,5,6)
grid_columnconfigure(0,1,2,3,4)

root.mainloop()


#!/usr/bin/python3

# encoding:utf-8
import tkinter as tk

root = tk.Tk()
root.title("Small Calculator")
root.geometry('500x300')

var1 = tk.DoubleVar()
label1 = tk.Label(text="The First Number", width=20, height=2)
label1.pack()
entry1 = tk.Entry(width=20)
entry1.pack()

var2 = tk.StringVar()
label2 = tk.Label(text="The Operator", width=20, height=2)
label2.pack()
entry2 = tk.Entry(width=20)
entry2.pack()

var3 = tk.DoubleVar()
label3 = tk.Label(text="The Second Number", width=20, height=2)
label3.pack()
entry3 = tk.Entry(width=20)
entry3.pack()

var4 = tk.DoubleVar()
label4 = tk.Label(text="The Solution", width=20, height=2)
label4.pack()
label5 = tk.Label(textvar=var4, width=30, height=1,)
label5.pack()

def clickFun():
    global var1
    global var2
    global var3
    global var4
    va11 = int(entry1.get())
    var2 = entry2.get()
    var3 = int(entry3.get())
    if var2 == '+':
        var4.set(int(va11+var3))
    elif var2 == '-':
        var4.set(int(va11-var3))
    elif var2 == '*':
        var4.set(int(va11*var3))
    elif var2 == '/':
        if var3 == 0:
            var4.set("请重新输入数据")
        else:
            var4.set(int(va11/var3))
    else:
        var4.set("运算符出错,请重新输入数据")

button1 = tk.Button(text="Deal" ,width=10, height=2, command=clickFun)
button1.pack()
root.mainloop()
root = tk.Tk()
root.title("Small Calculator")
root.geometry('500x300')

var1 = tk.DoubleVar()
label1 = tk.Label(text="The First Number", width=20, height=2)
label1.pack()
entry1 = tk.Entry(width=20)
entry1.pack()

var2 = tk.StringVar()
label2 = tk.Label(text="The Operator", width=20, height=2)
label2.pack()
entry2 = tk.Entry(width=20)
entry2.pack()

var3 = tk.DoubleVar()
label3 = tk.Label(text="The Second Number", width=20, height=2)
label3.pack()
entry3 = tk.Entry(width=20)
entry3.pack()

var4 = tk.DoubleVar()
label4 = tk.Label(text="The Solution", width=20, height=2)
label4.pack()
label5 = tk.Label(textvar=var4, width=30, height=1,)
label5.pack()

def clickFun():
    global var1
    global var2
    global var3
    global var4
    va11 = int(entry1.get())
    var2 = entry2.get()
    var3 = int(entry3.get())
    if var2 == '+':
        var4.set(int(va11+var3))
    elif var2 == '-':
        var4.set(int(va11-var3))
    elif var2 == '*':
        var4.set(int(va11*var3))
    elif var2 == '/':
        if var3 == 0:
            var4.set("请重新输入数据")
        else:
            var4.set(int(va11/var3))
    else:
        var4.set("运算符出错,请重新输入数据")

button1 = tk.Button(text="Deal" ,width=10, height=2, command=clickFun)
button1.pack()
root.mainloop()

img