学生制作,简单易懂的python wx库计算器

学生制作,简单易懂的python wx库计算器

前言

十分容易理解,适合和我一样的初学者(其实是老师布置的课后作业),如果是搜题进来的同学,希望能先试着阅读理解一遍,我在网上也搜过题,都写的很复杂,而我自己做的既没有异常处理,又没有额外的什么菜单、颜色,结构清晰明了,无疑是最适合学生的!

import wx
import math

class mainframe(wx.Frame):
    def __init__(self,parent):
        wx.Frame.__init__(self,parent,id=-1,title="Python计算器",size=(500,600))
        panel = wx.Panel(self)

        # 显示屏
        self.screen = wx.TextCtrl(parent=panel,pos=(45,20),size=(400,100),style=wx.TE_READONLY)
        font1=wx.Font('100')
        self.screen.SetFont(font1)
        self.result=""

        # 创建按钮并绑定事件
        # 第一排按钮
        self.btn_power = wx.Button(parent=panel, label='x乘y次方', pos=(45, 180), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_power, self.btn_power)
        self.btn_root = wx.Button(parent=panel, label='x开y次根', pos=(145, 180), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_root, self.btn_root)
        self.btn_sin = wx.Button(parent=panel, label='sin( )', pos=(245, 180), size=(42, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_sin, self.btn_sin)
        self.btn_cos = wx.Button(parent=panel, label='cos( )', pos=(291, 180), size=(42, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_cos, self.btn_cos)
        self.btn_leftbra = wx.Button(parent=panel, label='(', pos=(355, 180), size=(42, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_leftbra, self.btn_leftbra)
        self.btn_rightbra = wx.Button(parent=panel, label=')', pos=(401, 180), size=(42, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_rightbra, self.btn_rightbra)
        # 第二排按钮
        self.btn_clean = wx.Button(parent=panel, label='清空', pos=(45, 240), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_clean, self.btn_clean)
        self.btn_div = wx.Button(parent=panel, label='÷', pos=(145, 240), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_div, self.btn_div)
        self.btn_mul = wx.Button(parent=panel, label='×', pos=(245, 240), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_mul, self.btn_mul)
        self.btn_back = wx.Button(parent=panel, label='退格', pos=(355, 240), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_back, self.btn_back)
        # 第三排按钮
        self.btn_7 = wx.Button(parent=panel, label='7', pos=(45, 300), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_7, self.btn_7)
        self.btn_8 = wx.Button(parent=panel, label='8', pos=(145, 300), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_8, self.btn_8)
        self.btn_9 = wx.Button(parent=panel, label='9', pos=(245, 300), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_9, self.btn_9)
        self.btn_sub = wx.Button(parent=panel, label='-', pos=(355, 300), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_sub, self.btn_sub)
        # 第四排按钮
        self.btn_4 = wx.Button(parent=panel, label='4', pos=(45, 360), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_4, self.btn_4)
        self.btn_5 = wx.Button(parent=panel, label='5', pos=(145, 360), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_5, self.btn_5)
        self.btn_6 = wx.Button(parent=panel, label='6', pos=(245, 360), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_6, self.btn_6)
        self.btn_add = wx.Button(parent=panel, label='+', pos=(355, 360), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_add, self.btn_add)
        # 第五排按钮
        self.btn_1 = wx.Button(parent=panel, label='1', pos=(45, 420), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_1, self.btn_1)
        self.btn_2 = wx.Button(parent=panel, label='2', pos=(145, 420), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_2, self.btn_2)
        self.btn_3 = wx.Button(parent=panel, label='3', pos=(245, 420), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_3, self.btn_3)
        self.btn_equal = wx.Button(parent=panel, label='=', pos=(355, 420), size=(88, 105))
        self.Bind(wx.EVT_BUTTON, self.On_btn_equal, self.btn_equal)
        # 第六排按钮
        self.btn_percent = wx.Button(parent=panel, label='%', pos=(45, 480), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_percent, self.btn_percent)
        self.btn_0 = wx.Button(parent=panel, label='0', pos=(145, 480), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_0, self.btn_0)
        self.btn_point = wx.Button(parent=panel, label='.', pos=(245, 480), size=(88, 45))
        self.Bind(wx.EVT_BUTTON, self.On_btn_point, self.btn_point)

        # 按钮事件方法
        # 第一排按钮
    def On_btn_power(self, event):
        self.result = self.result + "**"
        self.screen.SetValue(self.result)

    def On_btn_root(self, event):
        self.result = self.result + "**1/"
        self.screen.SetValue(self.result)

    def On_btn_sin(self, event):
        self.result = "math.sin("+ self.result + ")"
        self.screen.SetValue(self.result)

    def On_btn_cos(self, event):
        self.result = "math.cos("+ self.result + ")"
        self.screen.SetValue(self.result)

    def On_btn_leftbra(self, event):
        self.result = self.result + "("
        self.screen.SetValue(self.result)

    def On_btn_rightbra(self, event):
        self.result = self.result + ")"
        self.screen.SetValue(self.result)

        # 第二排按钮
    def On_btn_clean(self, event):
        self.result = ""
        self.screen.SetValue(self.result)

    def On_btn_div(self, event):
        self.result = self.result + "/"
        self.screen.SetValue(self.result)

    def On_btn_mul(self, event):
        self.result = self.result + "*"
        self.screen.SetValue(self.result)

    def On_btn_back(self, event):
        self.result = self.result[0:-1]
        self.screen.SetValue(self.result)

        # 第三排按钮
    def On_btn_7(self, event):
        self.result = self.result + "7"
        self.screen.SetValue(self.result)

    def On_btn_8(self, event):
        self.result = self.result + "8"
        self.screen.SetValue(self.result)

    def On_btn_9(self, event):
        self.result = self.result + "9"
        self.screen.SetValue(self.result)

    def On_btn_sub(self, event):
        self.result = self.result + "-"
        self.screen.SetValue(self.result)

        # 第四排按钮
    def On_btn_4(self, event):
        self.result = self.result + "4"
        self.screen.SetValue(self.result)

    def On_btn_5(self, event):
        self.result = self.result + "5"
        self.screen.SetValue(self.result)

    def On_btn_6(self, event):
        self.result = self.result + "6"
        self.screen.SetValue(self.result)

    def On_btn_add(self, event):
        self.result = self.result + "+"
        self.screen.SetValue(self.result)

        # 第五排按钮
    def On_btn_1(self, event):
        self.result = self.result + "1"
        self.screen.SetValue(self.result)

    def On_btn_2(self, event):
        self.result = self.result + "2"
        self.screen.SetValue(self.result)

    def On_btn_3(self, event):
        self.result = self.result + "3"
        self.screen.SetValue(self.result)

    def On_btn_equal(self, event):
        self.result = str(eval(self.result))        #程序的关键,感谢eval()函数
        self.screen.SetValue(self.result)

        # 第六排按钮
    def On_btn_percent(self, event):
        self.result = self.result + "%"
        self.screen.SetValue(self.result)

    def On_btn_0(self, event):
        self.result = self.result + "0"
        self.screen.SetValue(self.result)

    def On_btn_point(self, event):
        self.result = self.result + "."
        self.screen.SetValue(self.result)


if __name__=='__main__':
    app = wx.App()
    mainframe(None).Show()
    app.MainLoop()


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值