首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >自学2年Python打造多功能计算器,求大佬指点

自学2年Python打造多功能计算器,求大佬指点

原创
作者头像
编程爱好者001
发布2026-07-11 16:08:09
发布2026-07-11 16:08:09
1110
举报

本人是初中学生,学过两年C++,Python自学了两年,只算是一个萌新,试着做了一个简易计算器练练手。现在发在社区里,望能有大佬指点,本人不胜感激!如有问题,欢迎各位将高见发在评论区,本人定逐条认真查看!(下面是代码)

代码语言:python
复制
import tkinter.messagebox
import tkinter as tk
import math,numpy,sys,os
def show():
    window2=tk.Tk()
    window2.title('更新信息')
    window2.geometry('450x180')
    text5=tk.Label(window2,text="1.1版本更新信息",fg="black",font=("Times",40,"bold"))
    text5.pack()
    text6=tk.Label(window2,text="·1.1 2025年7月12日 增添发行公告",fg="black",font=("Times",20))
    text6.pack()
    button5=tk.Button(window2,text="继续",command=window2.destroy)
    button5.pack(fill="x",pady=(20,0))
    window2.wait_window(window2)
    window3=tk.Tk()
    window3.title('更新信息')
    window3.geometry('1100x180')
    text5=tk.Label(window3,text="1.2版本更新信息",fg="black",font=("Times",40,"bold"))
    text5.pack()
    text6=tk.Label(window3,text="·1.2 2025年7月13日12:38:03 增添更新信息显示,增加功能数量,修改部分代码以适配新版本",fg="black",font=('Times',20))
    text6.pack()
    button6=tk.Button(window3,text="继续",command=window3.destroy)
    button6.pack(fill="x",pady=(20,0))
    window3.wait_window(window3)
    window4=tk.Tk()
    window4.title('更新信息')
    window4.geometry('1060x180')
    text5=tk.Label(window4,text="2.0版本更新信息",fg="black",font=("Times",40,"bold"))
    text5.pack()
    text6=tk.Label(window4,text="·2.0 2025年8月8日13:36:05 增加部分代码,修改错误代码,修补程序漏洞,提升用户体验",fg="black",font=('Times',20))
    text6.pack()
    button7=tk.Button(window4,text="继续",command=window4.destroy)
    button7.pack(fill="x",pady=(20,0))
    window4.wait_window(window4)
    window5=tk.Tk()
    window5.title('更新信息')
    window5.geometry('1250x200')
    text5=tk.Label(window5,text="3.0版本更新信息",fg="black",font=("Times",40,"bold"))
    text5.pack()
    text6=tk.Label(window5,text="·3.0 2026年6月27日21:29:01 完成全软件大规模修改优化,升级“发行公告”为“使用说明”,\n 修改发行公告及更新信息显示模式,增加计算功能,删除冗余代码,纠正部分代码错误,提升用户体验",fg="black",font=("Times",20))
    text6.pack()
    button8=tk.Button(window5,text="关闭",command=window5.destroy)
    button8.pack(fill="x",pady=(20,0))
    window5.mainloop()
def quit2():
    tkinter.messagebox.showinfo('退出','感谢使用,下次再见!')
    sys.exit()
def gonggao():
    window=tk.Tk()
    window.title('公告')
    window.geometry('1050x700')
    text2=tk.Label(window,text="“简易计算器 3.0”使用方法",fg="black",font=("Times",40,"bold"))
    text2.pack()
    text3=tk.Label(window,text="“简易计算器 3.0”软件已于2026年6月27日正式发行,具体使用方法如下:(持续更新)",fg="black",font=("Times",20))
    text3.pack()
    text4=tk.Label(window,text="\t1.计算简单数学表达式:直接输入。如:1+1;\n2.幂运算:pow(m,n),表示计算m的n次幂。如:pow(2,2);\n3.开根运算:pow(m,1/n),表示计算n次根号m的值。如:pow(2,1/2);\n4.计算字符串的长度:len(s),表示计算字符串s的长度。如:len('123');\n5.计算两数的平均值:abs(m,n),表示计算m和n的平均值。如:abs(1,2);\n6.计算某数的阶乘:factorial(a),表示计算a!,即a的阶乘。如:factorial(5);\n7.计算最大公约数:gcd(a,b...m),表示计算数据a到m的最大公约数。如:gcd(1,2,3,4,5);\n8.计算最小公倍数:lcm(a,b...m),表示计算数据a到m的最小公倍数。如:lcd(1,2,3,4,5);\n9.三角函数(双曲函数)运算,按照对应数学语言输入即可。\n 如:sin(45),sinh(45);(此功能持续更新中,如有缺漏敬请谅解!)\n10.如需调用π,请输入:pi。\n\n注意,计算时请将输入法设置为英文,否则计算将失败!\n\n 版权所有,侵权必究!计算功能持续更新中,如有缺漏敬请谅解!祝您使用愉快!\n\n提示,如果你试图利用此程序运行恶意代码,该程序不欢迎你,请立即离开!",fg="black",font=("Times",20))
    text4.pack()
    button4=tk.Button(window, text="关闭", command=window.destroy)
    button4.pack(anchor=tk.SW,fill="x",pady=(20,0))
    window.mainloop()
def on_closing():
    if messagebox.askokcancel('退出','确定退出?'):
        root_window.destroy
safe_variables={
    'abs':abs,'pi':math.pi,'e':math.e,'tau':math.tau,'inf':math.inf,'nan':math.nan,'sqrt':math.sqrt,'sum':numpy.sum,'factorial':math.factorial,'gcd':math.gcd,'lcm':math.lcm,'pow':math.pow,'sin':math.sin,'cos':math.cos,'tan':math.tan,'sinh':math.sinh,"cosh":math.cosh,'tanh':math.tanh,'asin':math.asin,'acos':math.acos,'atan':math.atan,'atan2':math.atan2,'asinh':math.asinh,'acosh':math.acosh,'atanh':math.atanh
}
root_window=tk.Tk()
root_window.title('简易计算器 3.0')
root_window.geometry('300x430')
text1=tk.Label(root_window, text="请输入计算公式:\n(支持各类运算,\n 详见“使用方法”)", fg="black", font=("Times", 20, "bold"))
text1.pack()
entry=tk.Entry(root_window)
entry.pack(anchor=tk.CENTER,pady=(50,0))
def show_input(event=None):
    a=entry.get()
    if not a:
        tkinter.messagebox.showerror('错误','输入不能为空!')
    try:
        b=compile(a,"<string>","eval")
        tkinter.messagebox.showinfo('计算结果',eval(b, {"__builtins__": {}},safe_variables))
    except SyntaxError as e:
        tkinter.messagebox.showerror('错误','输入表达式无法运算:'+str(e))
    except NameError as e:
        tkinter.messagebox.showerror('错误','输入非法字符:'+str(e))
    except ZeroDivisionError as e:
        tkinter.messagebox.showerror('错误','输入除数为0:'+str(e))
    except ValueError as e:
        tkinter.messagebox.showerror('错误',"输入表达式不符合数学语法:"+str(e))
button1=tk.Button(root_window, text="计算(Enter)", command=show_input)
button2=tk.Button(root_window,text="关闭",command=quit2)
button3=tk.Button(root_window,text="使用方法",command=gonggao)
button4=tk.Button(root_window,text="更新信息",command=show)
button1.pack(anchor=tk.SE,fill="x",pady=(50,0))
button2.pack(anchor=tk.SW,fill="x",pady=(25,0))
button3.pack(anchor=tk.SE,fill="x",pady=(25,0))
button4.pack(anchor=tk.SE,fill="x",pady=(25,0))
root_window.bind('<Return>',show_input)
root_window.mainloop()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档