美文网首页
day7-计算器

day7-计算器

作者: deeann1993 | 来源:发表于2018-05-19 22:56 被阅读0次

通过视频学习,学习了python中怎么实现一个计算器,主要运用了wxPython 库。原视频中是python2.7版本,我把它修改成了python3.6版本

学习视频链接如下:计算器

wxPython库安装链接如下:wxPython各种版本的.whl和.zip文件

我安装的是python3.6版本win64位的.whl
wxPython-4.0.0b2-cp36-cp36m-win_amd64.whl

代码如下:


import wx
class CalcFrame(wx.Frame):
    def __init__(self, title):
        wx.Frame.__init__(self, None, -1, title, size=(300, 320),
                          style=wx.DEFAULT_FRAME_STYLE ^ (wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX))
        # 建立面板
        panel = wx.Panel(self)
        # 建sizer后,窗口可根据大小自动调整, wx.VERTICAL, wx.HORIZONTAL
        boxsize = wx.BoxSizer(wx.VERTICAL)
        # 建grid便于放置控件
        gridBox = wx.GridSizer(rows=6, cols=5, hgap=1, vgap=1)
        self.equation = ""

        # 建计算器显示屏
        self.textprint = wx.TextCtrl(panel, -1, '', style=wx.TE_RIGHT | wx.TE_READONLY)
        self.bgFont = wx.Font(pointSize=25, family=wx.FONTFAMILY_SWISS,
                                style=wx.FONTSTYLE_NORMAL, weight=wx.FONTWEIGHT_NORMAL)
        #在python2.7版本中 self.bgFont = wx.Font(25,wx.SWISS,wx.NORMAL,wx.BOLD,face=u"Roboto")
        self.textprint.SetFont(self.bgFont)
        self.textprint.SetBackgroundColour((210, 210, 210))
        self.textprint.SetForegroundColour((15, 15, 15))

        # 按钮数据
        self.buttonData="7 8 9 DEL AC 4 5 6 * ÷ 1 2 3 + - 0 % pi e sqrt ^ sin cos tan log10 ln ( ) . =".split()

        buttonLength = len(self.buttonData)
        for i in range(buttonLength):
            labels = "%s" % self.buttonData[i]
            buttonIterm = wx.Button(panel, i, labels)
            self.createHandler(buttonIterm, labels)
            gridBox.Add(buttonIterm, 0, flag=wx.EXPAND)
        boxsize.Add(self.textprint, 1, flag=wx.EXPAND)
        boxsize.Add(gridBox, 5, flag=wx.EXPAND)
        panel.SetSizerAndFit(boxsize)

    # 创建按钮处理方法
    def createHandler(self, button, labels):
        item = "DEL AC ="
        if labels not in item:
            self.Bind(wx.EVT_BUTTON, self.OnAppend, button)
        elif labels == 'DEL':
            self.Bind(wx.EVT_BUTTON, self.OnDel, button)
        elif labels == 'AC':
            self.Bind(wx.EVT_BUTTON, self.OnAc, button)
        elif labels == '=':
            self.Bind(wx.EVT_BUTTON, self.OnTarget, button)

    # 添加运算符与数字
    def OnAppend(self, event):
        eventbutton = event.GetEventObject()
        label = eventbutton.GetLabel()
        self.equation += label
        self.textprint.SetValue(self.equation)

    def OnDel(self, event):
        self.equation = self.equation[:-1]
        self.textprint.SetValue(self.equation)

    def OnAc(self, event):
        self.textprint.Clear()
        self.equation = ""

    def OnTarget(self, event):
        string = self.equation
        if '^' in string:
            string = string.replace('^', '**')
        if 'ln' in string:
            string = string.replace('ln', 'log')
        try:
            target = eval(string)
            self.equation = str(target)
            self.textprint.SetValue(str(target))
        except SyntaxError:
            dlg = wx.MessageDialog(self, u'格式错误,请输入正确的等式!',
                                   u'请注意', wx.OK | wx.ICON_INFORMATION)
            dlg.ShowModal()
            dlg.Destroy()


class App(wx.App):
    def OnInit(self):
        self.frame = CalcFrame(u'计算器')
        self.frame.Center()
        self.frame.Show()
        return True

if __name__ == '__main__':
    app = App()
    app.MainLoop()

相关文章

  • day7-计算器

    通过视频学习,学习了python中怎么实现一个计算器,主要运用了wxPython 库。原视频中是python2.7...

  • 2020-01-29

    day7-庐州月不习惯用思维导图 还是用的onenote

  • iOS简单项目 — 计算器

    计算器所需求功能 计算器所用模式:MVC计算器所用语言:Swift计算器所参考课程:斯坦福 第一步:构造计算器界面...

  • 【敲黑板】考试计算器技巧

    方案一 普通计算器+科学计算器(让带计算器) 方案二 搜狗输入法V+计算大法(不让带计算器) 快捷操作 加:+ ...

  • 2018-11-11

    html部分 计算器 计算器 × □ - CE ...

  • 房贷计算器

    最近房产版升级,需要重新制作房贷计算器的功能,主要参考了 房天下房贷计算器和安居客房贷计算器,两大平台的计算器。 ...

  • 2018-11-01for/while/计算器

    计算器 计算器 window.onload = function(){va...

  • 使用WGIS的字段计算器

    WGIS的字段计算器(Field Calculator)跟其他桌面GIS软件的字段计算器类似,计算器的规则遵循Ja...

  • 2020-10-16学习小组Day7笔记-yikedou

    Day7-测序知识 测序的世界[https://www.jianshu.com/p/101c14c3a1d2] 初...

  • C#第一次作业02

    #作业要求 乘法计算器 #程序 namespace 乘法计算器 { public partial class ...

网友评论

      本文标题:day7-计算器

      本文链接:https://www.haomeiwen.com/subject/vutzdftx.html