python实现多功能计算器

核心语句:

eval语句,具有自动计算功能
借助tkinter完成图形界面描述
流程如下:

  1. 创建界面:
from tkinter import *
win=Tk()
win.title('计算器')
win.geometry('450x680')

结果如下:
在这里插入图片描述

2.放置按钮:

but7=Button(win,text=7,width=3,font=('Arial',31),command=lambda :numinput(7))#如果只是先添加命令可以先不添加command关键字
but8=Button(win,text=8,width=3,font=('Arial',31),command=lambda :numinput(8))
but9=Button(win,text=9,width=3,font=('Arial',31),command=lambda :numinput(9))
but4=Button(win,text=4,width=3,font=('Arial',31),command=lambda :numinput(4))
but5=Button(win,text=5,width=3,font=('Arial',31),command=lambda :numinput(5))
but6=Button(win,text=6,width=3,font=('Arial',31),command=lambda :numinput(6))
but1=Button(win,text=1,width=3,font=('Arial',31),command=lambda :numinput(1))
but2=Button(win,text=2,width=3,font=('Arial',31),command=lambda :numinput(2))
but3=Button(win,text=3,width=3,font=('Arial',31),command=lambda :numinput(3))
but0=Button(win,text=0,width=3,font=('Arial',31),command=lambda :numinput(0))
bu1=Button(win,text='ans',width=3,font=('Arial',31),command=ans_)
bu2=Button(win,text='π',width=3,font=('Arial',31),command=lambda :numinput(pi))
bu3=Button(win,text='e',width=3,font=('Arial',31),command=lambda :numinput(e))
bu4=Button(win,text='CE',width=3,font=('Arial',31),command=clear)
bu5=Button(win,text='del',width=3,font=('Arial',31),command=delete_n)
bu6=Button(win,text='x^2',width=3,font=('Arial',31),command=mi_2)
bu7=Button(win,text='1/x',width=3,font=('Arial',31),command=x_1)
bu8=Button(win,text='|x|',width=3,font=('Arial',31),command=juedui)
bu9=Button(win,text='exp',width=3,font=('Arial',31),command=lambda :add_char('exp'))
bu0=Button(win,text='mod',width=3,font=('Arial',31),command=lambda:add_char('%'))
b1=Button(win,text='sqrt()',width=3,font=('Arial',31),command=sqrt_)
b2=Button(win,text='(',width=3,font=('Arial',31),command=lambda :add_char('('))
b3=Button(win,text=')',width=3,font=('Arial',31),command=lambda :add_char(')'))
b4=Button(win,text='n!',width=3,font=('Arial',31),command=jiechen)
b5=Button(win,text='/',width=3,font=('Arial',31),command=lambda :add_char('/'))
b6=Button(win,text='x^y',width=3,font=('Arial',31),command=lambda :add_char('^'))
b7=Button(win,text='*',width=3,font=('Arial',31),command=lambda :add_char('*'))
b8=Button(win,text='10^x',width=3,font=('Arial',31),command=zhi_10)
b9=Button(win,text='-',width=3,font=('Arial',31),command=lambda :add_char('-'))
b0=Button(win,text='log',width=3,font=('Arial',31),command=log_)
b11=Button(win,text='+',width=3,font=('Arial',31),command=lambda :add_char('+'))
b12=Button(win,text='ln',width=3,font=('Arial',31),command=IN_)
b13=Button(win,text='+/-',width=3,font=('Arial',31),command=fu)
b14=Button(win,text='.',width=3,font=('Arial',31),command=lambda :add_char('.'))
b15=Button(win,text='=',width=3,font=('Arial',31),command=end1)
b6.place(x=0,y=320)
but7.place(x=90,y=320)
but8.place(x=180,y=320)
but9.place(x=270,y=320)
b7.place(x=360,y=320)

but4.place(x=90,y=410)
but5.place(x=180,y=410)
but6.place(x=270,y=410)
b8.place(x=0,y=410)
b9.place(x=360,y=410)

but1.place(x=90,y=500)
but2.place(x=180,y=500)
but3.place(x=270,y=500)
b0.place(x=0,y=500)
b11.place(x=360,y=500)

b13.place(x=90,y=590)
but0.place(x=180,y=590)
b14.place(x=270,y=590)
b12.place(x=0,y=590)
b15.place(x=360,y=590)

bu2.place(x=90,y=50)
bu3.place(x=180,y=50)
bu4.place(x=270,y=50)
bu1.place(x=0,y=50)
bu5.place(x=360,y=50)

bu7.place(x=90,y=140)
bu8.place(x=180,y=140)
bu9.place(x=270,y=140)
bu6.place(x=0,y=140)
bu0.place(x=360,y=140)

b2.place(x=90,y=230)
b3.place(x=180,y=230)
b4.place(x=270,y=230)
b1.place(x=0,y=230)
b5.place(x=360,y=230)
en=Entry(win,width=30,font=('Arial',20))
en.place(x=0,y=0)

结果如下:
在这里插入图片描述

  1. 为按钮添加执行命令(前面button创建时已经添加了,如果不添加可以先不加上command=关键字段):
ans=0.0
flag=0
falg=0
def er_yuan():
    num=str(en.get())
    for i in range(0,len(num)):
        if (str.isdigit(num[i]) or num[i] == '.') == 0:
            number=eval(num[0:i])
            print(number)
            en.delete(0,END)
            if num[i]=='^':
                en.insert(0,str(number**(eval(num[i+1:]))))
            else:
                en.insert(0,str(number*(10**eval(num[i+3:]))))
            return
def numinput(number):
    global flag
    if (flag):
        en.delete(0,END)
        flag=0
    first_num=en.get()
    en.delete(0,END)
    en.insert(0,str(first_num)+str(number))
def clear():
    en.delete(0,END)
def delete_n():
    en.delete(len(str(en.get()))-1,END)
def x_1():
    num=str(en.get())
    n=1
    # if(num[-1]==')'):#如果想要整体做1/x可以使用加括号的方法
    #         en.delete(0,END)
    #         en.insert(0,str(1/eval(num[1:-2])))
    #         return
    if(num[-1]==')'):
        for i in range(len(num)-2,0,-1):
            if(num[i]==')'):
                    n+=1
            elif num[i]=='(':
                    n-=1
            if(n==0):
                en.delete(0,END)
                # print(num[i+1:-2])
                en.insert(0,num[0:i]+str(1/eval(num[i+1:-1])))
                #注意切片也是满足左开右闭的情况,只有右侧不取数字时才有
                # 可以得到从对应位置到最后的结果
                return

    for i in range(len(num)-1,0,-1):
        if  (str.isdigit(num[i]) or num[i]=='.')==0:
           pp=float(num[i+1:])
           if pp==0:
               en.delete(0,END)
               en.insert('error')
           print('ok')
           en.delete(0,END)
           en.insert(0,num[0:i+1]+str(1/pp))
           return
    en.delete(0,END)
    en.insert(0,str(1/float(num[0:])))
def mi_2():
    num=str(en.get())
    for i in range(len(num)-1,0,-1):#只需要读到第二个字符即可,因为如果第二个字符都不是字符
        #则即使前面是字符也是属于单目符号(这里只有  自取负符号-)对结果无关紧要
        if  (str.isdigit(num[i]) or num[i]=='.')==0:
           en.delete(0,END)
           en.insert(0,num[0:i+1]+str(eval(num[i:])*eval(num[i:])))
           return
    en.delete(0,END)
    en.insert(0,str(eval(num)*eval(num)))
#当点了=之后如果第一个为数字则就可以重新开始若要使用之前的数据可以使用ans
# 但是如果是使用的符号则需要使用之前的数字不做修改
def add_char(x):
    global falg
    if (x=='exp' or x=='^'):
        falg=1
    num = en.get()
    en.delete(0,END)
    global flag
    if(flag):
        en.insert(0,str(ans)+x)
        flag=0
    else:
        en.insert(0, str(num) +x)
def end1():
    global ans
    global flag
    global falg
    # for i in str(en.get()):
    if falg:
        er_yuan()
        falg=0
        return
    num=eval(str(en.get()))
    en.delete(0,END)
    en.insert(0,str(num))
    ans=num
    flag=1
def ans_():
    global ans
    num=en.get()
    en.delete(0, END)
    en.insert(0, str(num)+str(ans))
def juedui():
    num = str(en.get())
    en.delete(0, END)
    en.insert(0, str(abs(eval(num))))
def jiechen():
    num = str(en.get())
    en.delete(0, END)
    sum=1
    k=abs(eval(num))
    for i in range(2,k+1,1):
        sum*=i
    en.insert(0, str(sum))
def sqrt_():
    num = str(en.get())
    for i in range(len(num) - 1, 0, -1):
        if  (str.isdigit(num[i]) or num[i]=='.')==0:
            en.delete(0, END)
            en.insert(0, num[0:i+1] + str(math.sqrt(eval(num[i+1:]))))
            return
    en.delete(0, END)
    en.insert(0, str(math.sqrt(eval(num))))
def zhi_10():
    num = str(en.get())
    for i in range(len(num) - 1, 0, -1):
        if  (str.isdigit(num[i]) or num[i]=='.')==0:
            en.delete(0, END)
            en.insert(0, num[0:i+1] + str(10**(eval(num[i+1:]))))
            return
    en.delete(0, END)
    en.insert(0, str(10**(eval(num))))
def fu():
    num=en.get()
    en.delete(0,END)
    en.insert(0,'-'+str(num))
def log_():
    num = str(en.get())
    for i in range(len(num) - 1, 0, -1):
        if (str.isdigit(num[i]) or num[i] == '.') == 0:
            en.delete(0, END)
            en.insert(0, num[0:i + 1] + str(math.log10(eval(num[i + 1:]))))
            return
    en.delete(0, END)
    if eval(num[0:])<=0:
            en.insert(0,'error')
            return
    en.insert(0, str(math.log10(eval(num[0:]))))

def IN_():
    num = str(en.get())
    for i in range(len(num) - 1, 0, -1):
        if (str.isdigit(num[i]) or num[i] == '.') == 0:
            en.delete(0, END)
            en.insert(0, num[0:i + 1] + str(math.log(eval(num[i + 1:]))))
            return
    en.delete(0, END)
    if eval(num[0:]) <= 0:
        en.insert(0, 'error')
        return
    en.insert(0, str(math.log(eval(num[0:]))))

结果如下:
在这里插入图片描述
在这里插入图片描述

完整代码:

from tkinter import *
from math import pi
from math import e
import math
win=Tk()
win.title('计算器')
win.geometry('450x680')
ans=0.0
flag=0
falg=0
def er_yuan():
    num=str(en.get())
    for i in range(0,len(num)):
        if (str.isdigit(num[i]) or num[i] == '.') == 0:
            number=eval(num[0:i])
            print(number)
            en.delete(0,END)
            if num[i]=='^':
                en.insert(0,str(number**(eval(num[i+1:]))))
            else:
                en.insert(0,str(number*(10**eval(num[i+3:]))))
            return
def numinput(number):
    global flag
    if (flag):
        en.delete(0,END)
        flag=0
    first_num=en.get()
    en.delete(0,END)
    en.insert(0,str(first_num)+str(number))
def clear():
    en.delete(0,END)
def delete_n():
    en.delete(len(str(en.get()))-1,END)
def x_1():
    num=str(en.get())
    n=1
    # if(num[-1]==')'):#如果想要整体做1/x可以使用加括号的方法
    #         en.delete(0,END)
    #         en.insert(0,str(1/eval(num[1:-2])))
    #         return
    if(num[-1]==')'):
        for i in range(len(num)-2,0,-1):
            if(num[i]==')'):
                    n+=1
            elif num[i]=='(':
                    n-=1
            if(n==0):
                en.delete(0,END)
                # print(num[i+1:-2])
                en.insert(0,num[0:i]+str(1/eval(num[i+1:-1])))
                #注意切片也是满足左开右闭的情况,只有右侧不取数字时才有
                # 可以得到从对应位置到最后的结果
                return

    for i in range(len(num)-1,0,-1):
        if  (str.isdigit(num[i]) or num[i]=='.')==0:
           pp=float(num[i+1:])
           if pp==0:
               en.delete(0,END)
               en.insert('error')
           print('ok')
           en.delete(0,END)
           en.insert(0,num[0:i+1]+str(1/pp))
           return
    en.delete(0,END)
    en.insert(0,str(1/float(num[0:])))
def mi_2():
    num=str(en.get())
    for i in range(len(num)-1,0,-1):#只需要读到第二个字符即可,因为如果第二个字符都不是字符
        #则即使前面是字符也是属于单目符号(这里只有  自取负符号-)对结果无关紧要
        if  (str.isdigit(num[i]) or num[i]=='.')==0:
           en.delete(0,END)
           en.insert(0,num[0:i+1]+str(eval(num[i:])*eval(num[i:])))
           return
    en.delete(0,END)
    en.insert(0,str(eval(num)*eval(num)))
#当点了=之后如果第一个为数字则就可以重新开始若要使用之前的数据可以使用ans
# 但是如果是使用的符号则需要使用之前的数字不做修改
def add_char(x):
    global falg
    if (x=='exp' or x=='^'):
        falg=1
    num = en.get()
    en.delete(0,END)
    global flag
    if(flag):
        en.insert(0,str(ans)+x)
        flag=0
    else:
        en.insert(0, str(num) +x)
def end1():
    global ans
    global flag
    global falg
    # for i in str(en.get()):
    if falg:
        er_yuan()
        falg=0
        return
    num=eval(str(en.get()))
    en.delete(0,END)
    en.insert(0,str(num))
    ans=num
    flag=1
def ans_():
    global ans
    num=en.get()
    en.delete(0, END)
    en.insert(0, str(num)+str(ans))
def juedui():
    num = str(en.get())
    en.delete(0, END)
    en.insert(0, str(abs(eval(num))))
def jiechen():
    num = str(en.get())
    en.delete(0, END)
    sum=1
    k=abs(eval(num))
    for i in range(2,k+1,1):
        sum*=i
    en.insert(0, str(sum))
def sqrt_():
    num = str(en.get())
    for i in range(len(num) - 1, 0, -1):
        if  (str.isdigit(num[i]) or num[i]=='.')==0:
            en.delete(0, END)
            en.insert(0, num[0:i+1] + str(math.sqrt(eval(num[i+1:]))))
            return
    en.delete(0, END)
    en.insert(0, str(math.sqrt(eval(num))))
def zhi_10():
    num = str(en.get())
    for i in range(len(num) - 1, 0, -1):
        if  (str.isdigit(num[i]) or num[i]=='.')==0:
            en.delete(0, END)
            en.insert(0, num[0:i+1] + str(10**(eval(num[i+1:]))))
            return
    en.delete(0, END)
    en.insert(0, str(10**(eval(num))))
def fu():
    num=en.get()
    en.delete(0,END)
    en.insert(0,'-'+str(num))
def log_():
    num = str(en.get())
    for i in range(len(num) - 1, 0, -1):
        if (str.isdigit(num[i]) or num[i] == '.') == 0:
            en.delete(0, END)
            en.insert(0, num[0:i + 1] + str(math.log10(eval(num[i + 1:]))))
            return
    en.delete(0, END)
    if eval(num[0:])<=0:
            en.insert(0,'error')
            return
    en.insert(0, str(math.log10(eval(num[0:]))))

def IN_():
    num = str(en.get())
    for i in range(len(num) - 1, 0, -1):
        if (str.isdigit(num[i]) or num[i] == '.') == 0:
            en.delete(0, END)
            en.insert(0, num[0:i + 1] + str(math.log(eval(num[i + 1:]))))
            return
    en.delete(0, END)
    if eval(num[0:]) <= 0:
        en.insert(0, 'error')
        return
    en.insert(0, str(math.log(eval(num[0:]))))
but7=Button(win,text=7,width=3,font=('Arial',31),command=lambda :numinput(7))
but8=Button(win,text=8,width=3,font=('Arial',31),command=lambda :numinput(8))
but9=Button(win,text=9,width=3,font=('Arial',31),command=lambda :numinput(9))
but4=Button(win,text=4,width=3,font=('Arial',31),command=lambda :numinput(4))
but5=Button(win,text=5,width=3,font=('Arial',31),command=lambda :numinput(5))
but6=Button(win,text=6,width=3,font=('Arial',31),command=lambda :numinput(6))
but1=Button(win,text=1,width=3,font=('Arial',31),command=lambda :numinput(1))
but2=Button(win,text=2,width=3,font=('Arial',31),command=lambda :numinput(2))
but3=Button(win,text=3,width=3,font=('Arial',31),command=lambda :numinput(3))
but0=Button(win,text=0,width=3,font=('Arial',31),command=lambda :numinput(0))
bu1=Button(win,text='ans',width=3,font=('Arial',31),command=ans_)
bu2=Button(win,text='π',width=3,font=('Arial',31),command=lambda :numinput(pi))
bu3=Button(win,text='e',width=3,font=('Arial',31),command=lambda :numinput(e))
bu4=Button(win,text='CE',width=3,font=('Arial',31),command=clear)
bu5=Button(win,text='del',width=3,font=('Arial',31),command=delete_n)
bu6=Button(win,text='x^2',width=3,font=('Arial',31),command=mi_2)
bu7=Button(win,text='1/x',width=3,font=('Arial',31),command=x_1)
bu8=Button(win,text='|x|',width=3,font=('Arial',31),command=juedui)
bu9=Button(win,text='exp',width=3,font=('Arial',31),command=lambda :add_char('exp'))
bu0=Button(win,text='mod',width=3,font=('Arial',31),command=lambda:add_char('%'))
b1=Button(win,text='sqrt()',width=3,font=('Arial',31),command=sqrt_)
b2=Button(win,text='(',width=3,font=('Arial',31),command=lambda :add_char('('))
b3=Button(win,text=')',width=3,font=('Arial',31),command=lambda :add_char(')'))
b4=Button(win,text='n!',width=3,font=('Arial',31),command=jiechen)
b5=Button(win,text='/',width=3,font=('Arial',31),command=lambda :add_char('/'))
b6=Button(win,text='x^y',width=3,font=('Arial',31),command=lambda :add_char('^'))
b7=Button(win,text='*',width=3,font=('Arial',31),command=lambda :add_char('*'))
b8=Button(win,text='10^x',width=3,font=('Arial',31),command=zhi_10)
b9=Button(win,text='-',width=3,font=('Arial',31),command=lambda :add_char('-'))
b0=Button(win,text='log',width=3,font=('Arial',31),command=log_)
b11=Button(win,text='+',width=3,font=('Arial',31),command=lambda :add_char('+'))
b12=Button(win,text='ln',width=3,font=('Arial',31),command=IN_)
b13=Button(win,text='+/-',width=3,font=('Arial',31),command=fu)
b14=Button(win,text='.',width=3,font=('Arial',31),command=lambda :add_char('.'))
b15=Button(win,text='=',width=3,font=('Arial',31),command=end1)
b6.place(x=0,y=320)
but7.place(x=90,y=320)
but8.place(x=180,y=320)
but9.place(x=270,y=320)
b7.place(x=360,y=320)

but4.place(x=90,y=410)
but5.place(x=180,y=410)
but6.place(x=270,y=410)
b8.place(x=0,y=410)
b9.place(x=360,y=410)

but1.place(x=90,y=500)
but2.place(x=180,y=500)
but3.place(x=270,y=500)
b0.place(x=0,y=500)
b11.place(x=360,y=500)

b13.place(x=90,y=590)
but0.place(x=180,y=590)
b14.place(x=270,y=590)
b12.place(x=0,y=590)
b15.place(x=360,y=590)

bu2.place(x=90,y=50)
bu3.place(x=180,y=50)
bu4.place(x=270,y=50)
bu1.place(x=0,y=50)
bu5.place(x=360,y=50)

bu7.place(x=90,y=140)
bu8.place(x=180,y=140)
bu9.place(x=270,y=140)
bu6.place(x=0,y=140)
bu0.place(x=360,y=140)

b2.place(x=90,y=230)
b3.place(x=180,y=230)
b4.place(x=270,y=230)
b1.place(x=0,y=230)
b5.place(x=360,y=230)
en=Entry(win,width=30,font=('Arial',20))
en.place(x=0,y=0)



mainloop()

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这是一个简单的 Python 代码,实现一个计算器的 GUI 界面: ``` from tkinter import * def btnClick(numbers): global operator operator=operator+str(numbers) text_Input.set(operator) def btnClearDisplay(): global operator operator="" text_Input.set("") def btnEqualsInput(): global operator sumup=str(eval(operator)) text_Input.set(sumup) operator="" cal = Tk() cal.title("Calculator") operator="" text_Input = StringVar() txtDisplay = Entry(cal, font=('arial', 20, 'bold'), textvariable=text_Input, bd=30, insertwidth=4, bg="powder blue", justify='right').grid(columnspan=4) btn7=Button(cal,padx=16,pady=16,bd=8,fg="black",font=('arial',20,'bold'), text="7",bg="powder blue",command=lambda:btnClick(7)).grid(row=1,column=0) btn8=Button(cal,padx=16,pady=16,bd=8,fg="black",font=('arial',20,'bold'), text="8",bg="powder blue",command=lambda:btnClick(8)).grid(row=1,column=1) btn9=Button(cal,padx=16,pady=16,bd=8,fg="black",font=('arial',20,'bold'), text="9",bg="powder blue",command=lambda:btnClick(9)).grid(row=1,column=2) Addition=Button(cal,padx=16,pady=16,bd=8,fg="black",font=('arial',20,'bold'), text="+",bg="powder blue",command=lambda:btnClick("+")).grid(row=1,column=3) #=============================================================== btn4=Button(cal,padx=16,pady=16,bd=8,fg="black",font=('arial',20,'bold'), text="4",bg="powder blue",command=lambda:btnClick(4)).grid(row=2,column=0) btn5=Button(cal,padx=16,pady=16,bd=8,fg="black",font=('arial',20,'bold'), text="5",bg="powder blue",command=lambda:btnClick(5)).grid(row=2,column=1) btn6=Button(cal,padx=16,pady=16,bd=8,fg="black",font=('arial',20,'bold'), text="6",bg="powder blue",command=lambda:btnClick(6)).grid(row=2,column=2) Subtraction=Button(cal,padx=16,pady=16,bd=8,fg="black",font=('arial',20,'bold'), text="-",bg="powder blue",command=lambda:btnClick(" ### 回答2: Python一个简单易学且功能强大的编程语言,它有很多库和模块可以用来实现各种应用程序,包括图形用户界面(GUI)应用程序。编写一个基于GUI界面的计算器程序可以帮助用户进行简单的数学运算。下面是一个简单的Python代码示例,实现一个具有GUI界面的计算器程序: ```python import tkinter as tk def button_click(num): current = entry.get() entry.delete(0, tk.END) entry.insert(tk.END, current + str(num)) def calculate(): current = entry.get() entry.delete(0, tk.END) try: result = eval(current) entry.insert(tk.END, str(result)) except ZeroDivisionError: entry.insert(tk.END, "错误:除数不能为0") except: entry.insert(tk.END, "错误:请输入正确的表达式") def clear(): entry.delete(0, tk.END) # 创建主窗口 window = tk.Tk() window.title("简易计算器") # 创建输入框 entry = tk.Entry(window) entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10) # 创建按钮 button7 = tk.Button(window, text="7", command=lambda: button_click(7)) button7.grid(row=1, column=0) # 创建其他数字按钮... button_plus = tk.Button(window, text="+", command=lambda: button_click("+")) button_plus.grid(row=1, column=3) # 创建其他运算符按钮... button_equal = tk.Button(window, text="=", command=calculate) button_equal.grid(row=4, column=3) button_clear = tk.Button(window, text="清除", command=clear) button_clear.grid(row=4, column=0, columnspan=3) # 进入消息循环 window.mainloop() ``` 在这个例子中,使用了tkinter库来创建了一个主窗口,并在主窗口中添加了一个输入框和一些按钮。按钮的点击事件通过调用相应的函数来实现,当用户点击一个数字按钮时,会将相应的数字插入到输入框中;当用户点击一个运算符按钮时,会将相应的运算符插入到输入框中;当用户点击等号按钮时,会对输入的表达式进行计算,并将结果显示在输入框中;当用户点击清除按钮时,会清空输入框的内容。整个程序通过一个无限循环(消息循环)来等待用户的操作。这样,用户就可以通过GUI界面来进行简单的数学运算了。 ### 回答3: Python代码编写一个基本的计算器GUI界面可以使用tkinter模块来实现。下面是一个简单的例子: ```python import tkinter as tk def calculate(): try: result.set(eval(entry.get())) except: result.set("Error") # 创建主窗口 window = tk.Tk() window.title("计算器") # 创建输入框和结果标签 entry = tk.Entry(window) entry.pack() result = tk.StringVar() result_label = tk.Label(window, textvariable=result) result_label.pack() # 创建数字按钮 button_frame = tk.Frame(window) button_frame.pack() for i in range(3): for j in range(3): btn = tk.Button(button_frame, text=str(i*3 + j + 1), width=5, height=2, command=lambda x=str(i*3 + j + 1): entry.insert(tk.END, x)) btn.grid(row=i, column=j) # 创建运算符按钮 operators = ['+', '-', '*', '/'] for i, op in enumerate(operators): btn = tk.Button(button_frame, text=op, width=5, height=2, command=lambda x=op: entry.insert(tk.END, x)) btn.grid(row=i, column=3) # 创建清除按钮和计算按钮 clear_btn = tk.Button(button_frame, text="Clear", width=5, height=2, command=lambda: entry.delete(0, tk.END)) clear_btn.grid(row=3, column=0) equal_btn = tk.Button(button_frame, text="=", width=5, height=2, command=calculate) equal_btn.grid(row=3, column=1) window.mainloop() ``` 这个例子使用了tkinter模块创建了一个简单的计算器GUI界面。用户可以通过点击不同的数字按钮输入数字,并通过点击运算符按钮输入运算符。点击等号按钮会调用`calculate`函数进行计算,并将结果显示在结果标签上。通过点击清除按钮可以清除输入框的内容。 注意:这个例子只提供了基础的计算器功能,没有处理错误等情况,请根据需要进行扩展和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看不见的罗辑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值