python简易计算机_python 简易计算机 实例源码

【实例简介】

【实例截图】

【核心代码】

#! /usr/bin/env python

#coding=utf-8

'''

除法在连续运算时,没法运算小数位,因为设置的是int,会直接取整

'''

from Tkinter import *

root = Tk(className = "计算器")

root.geometry("500x580")

class App:

def __init__(self, master):

frame1 = Frame(master,borderwidth = 10)

frame1.pack()

frame2 = Frame(master,borderwidth = 10)

frame2.pack()

frame3 = Frame(master,borderwidth = 10)

frame3.pack()

Button(frame2, text = "1",font = ("Courier 20 bold roman"),command=lambda: self.callback(1) ).grid(row=0,column=0)

Button(frame2, text = "2",font = ("Courier 20 bold roman"),command=lambda: self.callback(2) ).grid(row=0,column=1)

Button(frame2, text = "3",font = ("Courier 20 bold roman"),command=lambda: self.callback(3) ).grid(row=0,column=2)

Button(frame2, text = "4",font = ("Courier 20 bold roman"),command=lambda: self.callback(4) ).grid(row=1,column=0)

Button(frame2, text = "5",font = ("Courier 20 bold roman"),command=lambda: self.callback(5) ).grid(row=1,column=1)

Button(frame2, text = "6",font = ("Courier 20 bold roman"),command=lambda: self.callback(6) ).grid(row=1,column=2)

Button(frame2, text = "7",font = ("Courier 20 bold roman"),command=lambda: self.callback(7) ).grid(row=2,column=0)

Button(frame2, text = "8",font = ("Courier 20 bold roman"),command=lambda: self.callback(8) ).grid(row=2,column=1)

Button(frame2, text = "9",font = ("Courier 20 bold roman"),command=lambda: self.callback(9) ).grid(row=2,column=2)

Button(frame2, text = "0",font = ("Courier 20 bold roman"),command=lambda: self.callback(0) ).grid(row=3,column=0)

Button(frame2, text = " ",font = ("Courier 20 bold roman"),command=lambda: self.callback1(" ") ).grid(row=3,column=1)

Button(frame2, text = "-",font = ("Courier 20 bold roman"),command=lambda: self.callback1("-") ).grid(row=3,column=2)

Button(frame2, text ="*",font = ("Courier 20 bold roman"),command=lambda: self.callback1("*") ).grid(row=4,column=1)

Button(frame2, text ="/",font = ("Courier 20 bold roman"),command=lambda: self.callback1("/") ).grid(row=4,column=2)

Button(frame2, text="=",font = ("Courier 20 bold roman"),command=self.result).grid(row=4,column=0)

Button(frame3, text="clear",font = ("Courier 20 bold roman"),command=lambda: self.clear() ).grid()

label_1 = Label(frame1,text="输入数字")

label_1.pack()

self.a = IntVar()

self.a.set(0)

e1 = Entry(frame1,font = ("Courier 20 bold roman"),textvariable = self.a)

e1.pack(padx=20,pady = 5)

#label_2 = Label(frame1,text="第二次输入数字")

#label_2.pack()

#self.b = IntVar()

#self.b.set(0)

#e2 = Entry(frame1,font = ("Courier 20 bold roman"),textvariable=self.b)

#e2.pack(padx=20,pady = 5)

label_3 = Label(frame1,text="运算符号")

label_3.pack()

self.c = IntVar()

self.c.set("")

e3 = Entry(frame1,font = ("Courier 20 bold roman"), textvariable = self.c)

e3.pack(padx=20,pady = 5)

label_4 = Label(frame1,text="运算结果")

label_4.pack()

self.d = IntVar()

self.d.set(0)

e4 = Entry(frame1,font = ("Courier 20 bold roman"), textvariable = self.d)

e4.pack(padx=20,pady = 5)

#算式的左数

self.left = 0

#算式的右数

self.right = 0

#在标签中显示值的

self.i = 0

#实现多位数的

self.j = 0

#连续多次运算时,保存左数的

self.k = 0

#连续多次运算

#self.l = 0

#运算符

self.accept_sign = ""

def callback1(self,t):

if t == " ":

self.c.set(t)

self.result()

self.accept_sign = " "

elif t == "-":

self.c.set(t)

self.result()

self.accept_sign = "-"

elif t == "*":

self.c.set(t)

self.result()

self.accept_sign = "*"

else:

self.c.set(t)

self.result()

self.accept_sign = "/"

if self.k == 0:

self.left = self.a.get()

else:

self.left = self.k

self.j = 0

#self.l = 1

def callback(self,t):

if self.j == 0:

self.i = t

self.a.set(self.i)

if self.j == 1:

self.i = self.i * 10 t

self.a.set(self.i)

if self.j == 2:

self.i = self.i * 10 t

self.a.set(self.i)

if self.j == 3:

self.i = self.i * 10 t

self.a.set(self.i)

if self.j == 4:

self.i = self.i * 10 t

self.a.set(self.i)

if self.j == 5:

self.i = self.i * 10 t

self.a.set(self.i)

if self.j == 6:

self.i = self.i * 10 t

self.a.set(self.i)

if self.j == 7:

self.i = self.i * 10 t

self.a.set(self.i)

if self.j == 8:

self.i = self.i * 10 t

self.a.set(self.i)

self.j = 1

def result(self):

self.right = self.a.get()

if self.accept_sign == " ":

self.d.set(self.left self.right)

if self.accept_sign == "-":

self.d.set(self.left - self.right)

if self.accept_sign == "*":

self.d.set(self.left * self.right)

if self.accept_sign == "/":

self.d.set(float(self.left) / self.right)

else:

pass

self.k = self.d.get()

self.j = 0

#self.l = 0

def clear(self):

self.accept_sign = ""

self.a.set(0)

self.c.set("")

self.d.set(0)

self.j = 0

self.k = 0

self.left = 0

self.right = 0

#self.l = 0

App(root)

root.mainloop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值