利用Python,Tkinter模块实现简单计算器计算器

博主分享了使用Python的Tkinter模块开发一个简单计算器的过程,包括遇到的问题和最终实现的效果。高级功能中存在π显示不全的小问题,但计算结果准确。完整代码和早期版本可在博主的GitHub仓库查看。
摘要由CSDN通过智能技术生成

博主前段时间学习Tkinter模块想制作一个简单的计算器,贴代码如下:

__author__='PythonStriker'


from tkinter import *
from math import *

# 计算器主窗体
root = Tk()
root.config(bg='#333')
root.geometry('250x380+600+220')
root.title('一个普通计算器       version_2.1')
root.resizable(width=False, height=False)
frame_show = Frame(width=300, height=150, bg='#333')

# 主窗体顶部区域
v = StringVar()
v.set('0')
show_label = Label(frame_show, textvariable=v, bg='#222', width=13, height=1,fg = '#fff' ,font=("黑体", 20, "bold"), justify=LEFT,anchor='e')
show_label.pack(padx=10, pady=10)
frame_show.pack()

# 是否按下了运算符
isopear = False

# 控制弹窗个数
newWindowNumber = 0

# 操作数中小数点个数
pointnumber = 0

# 统计输入运算符个数
opearnumber = 0

# 操作序列
calc = []

# 区分计算与按键计算flag
equal_flag = False

def change(num):
    global equal_flag
    global isopear
    global pointnumber
    if isopear == False:
        if v.get() == '0' and num != '.':
            v.set('')
            v.set(num)
        elif v.get() == '0' and num == '.':
            v.set('0.')
            pointnumber = 1
        else:
            if num == '.' and pointnumber == 1:
                pass
            elif num == '.' and pointnumber == 0:
                v.set(v.get() + num)
                pointnumber = 1
            else:
                if equal_flag:
                    v.set(num)
                    equal_flag = False
                else:
                    v.set(v.get() + num)
    else:
        if num == '.':
            v.set('0.')
            pointnumber = 1
        elif v.get() == '-':
            v.set(v.get() + num)
        else:
            v.set(num)
        isopear = False

# 运算
def operation(sign):
    global isopear
    global calc
    global pointnumber
    global opearnumber
    if isopear == False and opearnumber == 0:
        calc.append(v.get())
        if sign == '+':
            calc.append('+')
        elif sign == '-':
            calc.append('-')
        elif sign == '*':
            calc.append('*')
        elif sign == '/':
            calc.append('/')
        elif sign == '%':
            calc.append('%')
    else:
        # 加上符号的情况
        if sign == '+':
            equal('+')
        elif sign == '-':
            equal('-')
        elif sign == '*':
            equal('*')
        elif sign == '/':
            equal('/')
        elif sign == '%':
            equal('%')
    opearnumber = opearnumber + 1
    isopear = True
    pointnumber = 0

def equal(sign):
    global calc
    # 获取当前界面的数值准备运算
    calc.append(v.get())
    # 组成运算字符串
    calcstr = ''.join('%s' % id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值