国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現的簡單計算器功能詳解

2020-02-15 22:49:16
字體:
來源:轉載
供稿:網友

本文實例講述了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()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 商水县| 营口市| 苍南县| 博兴县| 马山县| 江都市| 海丰县| 安龙县| 宜君县| 讷河市| 丹东市| 宁南县| 大同县| 塔河县| 肇州县| 吉林市| 绥中县| 普格县| 屯留县| 翁源县| 大厂| 奎屯市| 连江县| 萨迦县| 佛教| 县级市| 井冈山市| 九寨沟县| 南城县| 仙桃市| 襄樊市| 左云县| 江阴市| 璧山县| 西乌珠穆沁旗| 漳平市| 雅江县| 隆安县| 常德市| 中山市| 肇州县|