基于wxpython的简易计算器代码(课后作业)

 此代码为课后作业,上传来仅供和我一样的python小白们参考学习,大佬们请勿喷(。・ω・。)

 如果有建议的话可以在评论区留言,多谢大佬们。

import wx
import math

class MyFrame(wx.Frame):
    def __init__(self,parent):
        wx.Frame.__init__(self,parent,title="计算器",size=(350,450))
        self.Ui()
        self.Center()

    def Ui(self):

        #创建绘板
        panel = wx.Panel(self)
        #创建垂直布局
        box_v1 = wx.BoxSizer(wx.VERTICAL)
        #创建水平布局
        box_h0 = wx.BoxSizer(wx.HORIZONTAL)
        box_h1 = wx.BoxSizer(wx.HORIZONTAL)
        box_h2 = wx.BoxSizer(wx.HORIZONTAL)
        box_h3 = wx.BoxSizer(wx.HORIZONTAL)
        box_h4 = wx.BoxSizer(wx.HORIZONTAL)
        box_h5 = wx.BoxSizer(wx.HORIZONTAL)
        box_h6 = wx.BoxSizer(wx.HORIZONTAL)

        #设置样式为右对齐,且文本控件为只读
        self.text = wx.TextCtrl(parent=panel, size=(320,70), style=wx.TE_RIGHT|wx.TE_READONLY)    #为什么必须加self.才能在下面的方法中使用
        # 创建字体
        font = wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
        self.text.SetFont(font)

        #创建按钮
        btn_CE = wx.Button(parent=panel, label="CE")

        btn_0 = wx.Button(parent=panel, label="0")
        btn_1 = wx.Button(parent=panel, label="1")
        btn_2 = wx.Button(parent=panel, label="2")
        btn_3 = wx.Button(parent=panel, label="3")
        btn_4 = wx.Button(parent=panel, label="4")
        btn_5 = wx.Button(parent=panel, label="5")
        btn_6 = wx.Button(parent=panel, label="6")
        btn_7 = wx.Button(parent=panel, label="7")
        btn_8 = wx.Button(parent=panel, label="8")
        btn_9 = wx.Button(parent=panel, label="9")

        btn_s1 = wx.Button(parent=panel, label=".")
        btn_a1 = wx.Button(parent=panel, label="+")
        btn_a2 = wx.Button(parent=panel, label="-")
        btn_a3 = wx.Button(parent=panel, label="*")
        btn_a4 = wx.Button(parent=panel, label="/")

        btn_d1 = wx.Button(parent=panel, label="乘方")
        btn_d2 = wx.Button(parent=panel, label="平方根")
        btn_d3 = wx.Button(parent=panel, label="正弦")
        btn_d4 = wx.Button(parent=panel, label="余弦")
        btn_z = wx.Button(parent=panel, label="=")

        btn_c1 = wx.Button(parent=panel, label="<-")
        btn_c2 = wx.Button(parent=panel, label="(")
        btn_c3 = wx.Button(parent=panel, label=")")



        # 添加组件
        box_h0.Add(self.text, proportion=1, flag=wx.EXPAND|wx.ALL, border=12)

        box_h1.Add(btn_d4, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h1.Add(btn_d3, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h1.Add(btn_d2, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h1.Add(btn_d1, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)

        box_h2.Add(btn_7, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h2.Add(btn_8, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h2.Add(btn_9, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h2.Add(btn_a1, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)

        box_h3.Add(btn_4, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h3.Add(btn_5, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h3.Add(btn_6, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h3.Add(btn_a2, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)

        box_h4.Add(btn_1, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h4.Add(btn_2, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h4.Add(btn_3, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h4.Add(btn_a3, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)

        box_h5.Add(btn_z, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h5.Add(btn_0, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h5.Add(btn_s1, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        box_h5.Add(btn_a4, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)

        box_h6.Add(btn_c1, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
        box_h6.Add(btn_c2, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
        box_h6.Add(btn_c3, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
        box_h6.Add(btn_CE, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)

        #将水平布局添加入垂直布局中
        box_v = wx.BoxSizer(wx.VERTICAL)
        box_v.Add(box_h0, proportion=1)
        box_v.Add(box_h1, proportion=1)
        box_v.Add(box_h6, proportion=1)
        box_v.Add(box_h2, proportion=1)
        box_v.Add(box_h3, proportion=1)
        box_v.Add(box_h4, proportion=1)
        box_v.Add(box_h5, proportion=1)
        #设置绘板布局样式
        panel.SetSizer(box_v)


        #绑定方法
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_CE, btn_CE)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_0, btn_0)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_1, btn_1)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_2, btn_2)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_3, btn_3)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_4, btn_4)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_5, btn_5)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_6, btn_6)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_7, btn_7)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_8, btn_8)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_9, btn_9)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_s1, btn_s1)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_a1, btn_a1)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_a2, btn_a2)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_a3, btn_a3)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_a4, btn_a4)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_z, btn_z)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_d1, btn_d1)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_d2, btn_d2)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_d3, btn_d3)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_d4, btn_d4)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_c1, btn_c1)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_c2, btn_c2)
        self.Bind(wx.EVT_BUTTON, self.OnClick_btn_c3, btn_c3)



    #添加按钮方法
        #CE清除所有内容
    def OnClick_btn_CE(self, event):
        self.text.SetValue("")
        #其他按钮
    def OnClick_btn_0(self,event):
        self.text.AppendText("0")
    def OnClick_btn_1(self,event):
        self.text.AppendText("1")
    def OnClick_btn_2(self,event):
        self.text.AppendText("2")
    def OnClick_btn_3(self,event):
        self.text.AppendText("3")
    def OnClick_btn_4(self,event):
        self.text.AppendText("4")
    def OnClick_btn_5(self,event):
        self.text.AppendText("5")
    def OnClick_btn_6(self,event):
        self.text.AppendText("6")
    def OnClick_btn_7(self,event):
        self.text.AppendText("7")
    def OnClick_btn_8(self,event):
        self.text.AppendText("8")
    def OnClick_btn_9(self,event):
        self.text.AppendText("9")
    def OnClick_btn_s1(self,event):
        self.text.AppendText(".")
    def OnClick_btn_a1(self,event):
        self.text.AppendText("+")
    def OnClick_btn_a2(self,event):
        self.text.AppendText("-")
    def OnClick_btn_a3(self,event):
        self.text.AppendText("*")
    def OnClick_btn_a4(self,event):
        self.text.AppendText("/")
        #添加乘方等其他方法
    def OnClick_btn_d1(self,event):
        self.text.AppendText("**")
    def OnClick_btn_d2(self,event):
        value = float(self.text.GetValue())
        value1 = str(math.sqrt(value))
        self.text.SetValue(value1)
    def OnClick_btn_d3(self,event):
        value = float(self.text.GetValue())
        value1 = str(math.sin(value))
        self.text.SetValue(value1)
    def OnClick_btn_d4(self,event):
        value = float(self.text.GetValue())
        value1 = str(math.cos(value))
        self.text.SetValue(value1)
    def OnClick_btn_z(self,event):
        z_str = self.text.GetValue()
        z_result = eval(z_str)
        self.text.SetValue(str(z_result))

    def OnClick_btn_c1(self,event):
        value = self.text.GetValue()
        value1 = value[0:-1]
        self.text.SetValue(value1)

    def OnClick_btn_c2(self,event):
        self.text.AppendText("(")
    def OnClick_btn_c3(self,event):
        self.text.AppendText(")")

if __name__ == "__main__":
    app = wx.App()
    MyFrame(None).Show(True)
    app.MainLoop()

 最后运行的界面就是下面这样了,不过有一些逻辑没有完善,如果你输入的字符串有错误的话,是会报错无法运行的。

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值