吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1842|回复: 35
收起左侧

[Python 原创] 40行python代码写一个简单的计算器

[复制链接]
zz443470785 发表于 2024-4-11 10:28
本帖最后由 zz443470785 于 2024-4-11 10:35 编辑

前言

最近在学习Python GUI, 选择的是 python 自带的 tkinter,优点是简单、快捷,缺点是不够美观。学了两天,用40行代码写了个简单的计算器,供大家学习参考。

  • 本代码为本人原创,转载请注明出处。
  • 仅限论坛学习交流使用,请勿滥用,谢谢!
  • 代码并未做全面测试,有问题请在评论区留言。

效果展示

运行结果

运行结果

源代码如下

from tkinter import *

window = Tk()
window.title('计算器')
window.attributes("-topmost", 1)        # 窗口置顶

str1 = ''

def input(msg):
    """输入"""
    global str1
    str1 = str1 + msg
    text(str1)

def text(msg):
    """输出"""
    label_show.config(text=msg)

def clear():
    """清除"""
    global str1
    label_show.config(text='')
    str1 = ''

def get_result():
    """计算"""
    global str1
    label_show.config(text=eval(str1))
    str1 = str(eval(str1))

label_show = Label(window, bg='yellow', width=30, height=5)
label_show.grid(row=0, column=0, columnspan=4, pady=4)
Button(window, text='1', font=('黑体', 15), width=3, command=lambda: input('1')).grid(row=1, column=0, padx=4, pady=4)
Button(window, text='2', font=('黑体', 15),  width=3, command=lambda: input('2')).grid(row=1, column=1, padx=4, pady=4)
Button(window, text='3', font=('黑体', 15),  width=3, command=lambda: input('3')).grid(row=1, column=2, padx=4, pady=4)
Button(window, text='+', font=('黑体', 15),  width=3, command=lambda: input('+')).grid(row=1, column=3, padx=4, pady=4)
Button(window, text='4', font=('黑体', 15),  width=3, command=lambda: input('4')).grid(row=2, column=0, padx=4, pady=4)
Button(window, text='5', font=('黑体', 15),  width=3, command=lambda: input('5')).grid(row=2, column=1, padx=4, pady=4)
Button(window, text='6', font=('黑体', 15),  width=3, command=lambda: input('6')).grid(row=2, column=2, padx=4, pady=4)
Button(window, text='-', font=('黑体', 15),  width=3, command=lambda: input('-')).grid(row=2, column=3, padx=4, pady=4)
Button(window, text='7', font=('黑体', 15),  width=3, command=lambda: input('7')).grid(row=3, column=0, padx=4, pady=4)
Button(window, text='8', font=('黑体', 15),  width=3, command=lambda: input('8')).grid(row=3, column=1, padx=4, pady=4)
Button(window, text='9', font=('黑体', 15),  width=3, command=lambda: input('9')).grid(row=3, column=2, padx=4, pady=4)
Button(window, text='x', font=('黑体', 15),  width=3, command=lambda: input('*')).grid(row=3, column=3, padx=4, pady=4)
Button(window, text='0', font=('黑体', 15),  width=3, command=lambda: input('0')).grid(row=4, column=0, padx=4, pady=4)
Button(window, text='C', font=('黑体', 15),  width=3, command=clear).grid(row=4, column=1, padx=4, pady=4)
Button(window, text='÷', font=('黑体', 15),  width=3, command=lambda: input('/')).grid(row=4, column=2, padx=4, pady=4)
Button(window, text='=', font=('黑体', 15),  width=3, command=get_result).grid(row=4, column=3, padx=4, pady=4)

window.mainloop()

利用 pyinstaller 打包成exe,大小8m

打包命令如下:
打包命令解释:打包成单个可执行文件,指定ico,不显示命令行窗口

pyinstaller -F -w --icon=D:\IDM下载\ico\jisuanqi.ico --onefile  jisuanqi.py

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
junjia215 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

anchovy126 发表于 2024-4-11 11:16
还要进行异常处理
[Python] 纯文本查看 复制代码
def get_result():
    """计算"""
    try:
        global str1
        label_show.config(text=eval(str1))
        str1 = str(eval(str1))
        if len(str1) > 30:
            label_show.config(text='超出显示范围')
            str1=''
    except Exception:
        label_show.config(text='计算错误')
        str1=''
Pwaerm 发表于 2024-4-11 11:09
非常厉害,学习了。
尝试把 按钮排列改成for循环,在函数执行的地方遇到问题了。
[Asm] 纯文本查看 复制代码
keys = ["1", "2", "3", "+", "4", "5", "6", "-",
        "7", "8", "9", "x", "0", "C", "÷", "="]
btns = []
for i in range(len(keys)):
    _btn = Button(window, text=keys[i], font=(
        '黑体', 15), width=3, command=input(此处用keys[i]有问题,还需要chatAI))
    _btn.grid(row=int(i/4)+1, column=i % 4, padx=4, pady=4)
    btns.append(_btn)
#修改失败
btns[15].cmmand = get_result
myfany 发表于 2024-4-11 10:33
 楼主| zz443470785 发表于 2024-4-11 10:35
myfany 发表于 2024-4-11 10:33
学习了感谢分享

随便写写,互相学习
 楼主| zz443470785 发表于 2024-4-11 10:38
dyp0206 发表于 2024-4-11 10:34
写的很好!!!!

随便写写,互相学习
52PJ070 发表于 2024-4-11 10:38
不错,学习了,感谢分享!
 楼主| zz443470785 发表于 2024-4-11 10:39

感谢支持
realyou 发表于 2024-4-11 10:41
非常棒,支持支持了
archon1 发表于 2024-4-11 10:51
练练手是完全没有问题的。
eeyuyan 发表于 2024-4-11 10:57
这么大吗要8m  8k还差不多
Liebesfreud 发表于 2024-4-11 10:59
有、意思,正在学python的萌新表示学到了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 15:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表