国产探花免费观看_亚洲丰满少妇自慰呻吟_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()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泰安市| 惠来县| 明光市| 巴塘县| 上杭县| 罗山县| 玛曲县| 镇康县| 疏附县| 浮山县| 丰镇市| 丰顺县| 西峡县| 凤翔县| 民勤县| 泗阳县| 余姚市| 绥棱县| 丽江市| 聂拉木县| 芷江| 罗平县| 河津市| SHOW| 化德县| 高清| 类乌齐县| 塔城市| 侯马市| 灵川县| 沐川县| 东阿县| 屯昌县| 仁布县| 七台河市| 西贡区| 寻甸| 福贡县| 三门峡市| 清水河县| 星子县|