项目一:使用python tkinter模块做简单的计算器

小白第一次发博客,可能有很多问题,望指正!

讲的不是很详细,提供思路。

目录:

  1. 成果展示
  2. 代码说明
  3. 其他补充和参考资料

——————分割线————————

1.成果展示

基本效果图:

         

 如图,要实现的基本功能有:带括号的四则运算、历史记录

扩展功能:按键可随窗口大小变化而变化

2.代码说明

(1)控制输入

def get_input(entry, argu):
    """控制输入"""
    # 从entry窗口展示中获取输入的内容
    input_data = entry.get()
    # 设置一些基础列表,方便控制
    listchar = ["+", "*", "/", ")"]
    listcharbase = ["+", "-", "*", "/"]
    listnums = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
    listcharall = ["+", "-", "*", "/", "(", ")"]
    listpoint = [".", ""]
    listcheck = listnums + listcharall + listpoint
    # 控制输入字符(只对按钮有用,这里没太大意义) 和 输入长度控制
    if not listcheck.__contains__(argu) or len(input_data) > 20:
        return

    # 第一个输入不能为运算符(负号和左括号除外)
    elif not input_data and listchar.__contains__(argu):
        return

    # 前一个输入为加号:
    elif input_data[-1:] == '+' and listchar.__contains__(argu):
        return

    # 前一个输入为负号:
    elif input_data[-1:] == '-' and (listchar.__contains__(argu) or (input_data[-2:-1] == '-' and argu == '-')):
        return

    # 前一个输入为乘号:
    elif input_data[-1:] == '*' and listchar.__contains__(argu):
        return

    # 前一个输入为除号:
    elif input_data[-1:] == '/' and listchar.__contains__(argu):
        return

    # 前一个输入为左括号:
    elif input_data[-1:] == '(' and listchar.__contains__(argu):
        return

    # 前一个输入为右括号:
    elif input_data[-1:] == ')' and not (listcharbase.__contains__(argu) or argu == ')'):
        return

    # 当前输入为右括号(右括号数量必须小于等于左括号的数量):
    elif argu == ')' and input_data.count('(') <= input_data.count(')'):
        return

    # 前一个输入为数字:
    elif listnums.__contains__(input_data[-1:]) and argu == "(":
        return

    # 当前输入为小数点(一个数只能有一个小数点):
    elif argu == '.':
        i = 1
        while i <= len(input_data):
            if listcharall.__contains__(input_data[-i]):
                break
            elif listpoint.__contains__(input_data[-i]):
                return

            else:
                i = i+1
        entry.insert("end", ar
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值