温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么使用Python实现简单计算器功能

发布时间:2021-04-13 10:10:58 来源:亿速云 阅读:277 作者:小新 栏目:开发技术

这篇文章将为大家详细讲解有关怎么使用Python实现简单计算器功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

本文实例讲述了Python实现的简单计算器功能。体如下:

使用python编写一款简易的计算器

怎么使用Python实现简单计算器功能
计算器效果图

首先搭建计算器的面板:

怎么使用Python实现简单计算器功能
计算器面板结构

建造一个继承于wx.Frame的frame,在init属性函数中搭建面板

class CalcFrame(wx.Frame):#建造一个继承于wx.Frame的frame   def __init__(self,title):     wx.Frame.__init__ (self,None,-1,title,               pos=(100,300),size=(300,320))     panel=wx.Panel(self)     boxsize=wx.BoxSizer(wx.VERTICAL)     gridBox=wx.GridSizer(4,4,1,1)     self.equation=""#记录一个等式,把它print到TextCtrl中

建立计算机显示屏TextCtrl

self.textprint=wx.TextCtrl(panel,-1,'',style=wx.TE_RIGHT|wx.TE_READONLY)#文本控制控件     self.bgFont=wx.Font(25,wx.SWISS,wx.NORMAL,wx.BOLD,face=u'Roboto')#设置字体样式     self.textprint.SetFont(self.bgFont)#使用SetFont将设置的字体样式运用在textprint中     self.textprint.SetForegroundColour('black')#设置前景色     self.textprint.SetBackgroundColour('white')#设置后景色

按钮

self.buttonData="7 8 9 DEL 4 5 6 AC 1 2 3 * / + - =".split()     #产生buttonIterm的label     #将label分配到按钮上去     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)

将textprint与buttonIterm放入boxsize中,再将将boxsize放入panel里

boxsize.Add(self.textprint,1,flag=wx.EXPAND)#在boxsize中加上文本控制控件,比例为1     boxsize.Add(gridBox,5,flag=wx.EXPAND)     panel.SetSizerAndFit(boxsize)#将boxsize放入panel里

创建不同按钮触发的不同函数

  def createHandler(self,button,labels):     #self.Bind(wx.EVT_BUTTON, self.OnButton1, self.Button1)     #这里self是一个Frame(wxPython中的窗体这样的东西),而Button1是放在这个Frame下面的一个Button,self.OnButton1就是事件处理函数。而wxPython定死了事件处理函数的形式:     items="DEL AC ="     if labels not in items:       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.OnEqual,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 OnEqual(self,event):     string=self.equation     try:       taget=eval(string)#执行这段代码得到的结果       self.equation=str(taget)       self.textprint.SetValue(self.equation)     except SyntaxError:#弹出消息对话框       dlg=wx.MessageDialog(self,u'输入格式错误',wx.Ok|wx.ICON_INFORMATION)       dlg.ShowModal()       dlg.Destory()

APP类

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()

完整示例代码如下:

# -*- coding:utf-8 -*- ''' Created on 2018年8月25日 @author: Administrator ''' import wx class CalcFrame(wx.Frame):#建造一个继承于wx.Frame的frame   def __init__(self,title):     wx.Frame.__init__ (self,None,-1,title,               pos=(100,300),size=(300,320))     panel=wx.Panel(self)     boxsize=wx.BoxSizer(wx.VERTICAL)     gridBox=wx.GridSizer(4,4,1,1)     self.equation=""#记录一个等式,把它print到TextCtrl中     self.textprint=wx.TextCtrl(panel,-1,'',style=wx.TE_RIGHT|wx.TE_READONLY)#文本控制控件     self.bgFont=wx.Font(25,wx.SWISS,wx.NORMAL,wx.BOLD,face=u'Roboto')#设置字体样式     self.textprint.SetFont(self.bgFont)#使用SetFont将设置的字体样式运用在textprint中     self.textprint.SetForegroundColour('black')#设置前景色     self.textprint.SetBackgroundColour('white')#设置后景色     self.buttonData="7 8 9 DEL 4 5 6 AC 1 2 3 * / + - =".split()     #产生buttonIterm的label     #将label分配到按钮上去     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中加上文本控制控件,比例为1     boxsize.Add(gridBox,5,flag=wx.EXPAND)     panel.SetSizerAndFit(boxsize)#将boxsize放入panel里   def createHandler(self,button,labels):     #self.Bind(wx.EVT_BUTTON, self.OnButton1, self.Button1)     #这里self是一个Frame(wxPython中的窗体这样的东西),而Button1是放在这个Frame下面的一个Button,self.OnButton1就是事件处理函数。而wxPython定死了事件处理函数的形式:     items="DEL AC ="     if labels not in items:       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.OnEqual,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 OnEqual(self,event):     string=self.equation     try:       taget=eval(string)#执行这段代码得到的结果       self.equation=str(taget)       self.textprint.SetValue(self.equation)     except SyntaxError:#弹出消息对话框       dlg=wx.MessageDialog(self,u'输入格式错误',wx.Ok|wx.ICON_INFORMATION)       dlg.ShowModal()       dlg.Destory() 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()

关于“怎么使用Python实现简单计算器功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI