最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)的簡(jiǎn)單計(jì)算器功能詳解

 更新時(shí)間:2018年08月25日 11:44:27   作者:Kedi  
這篇文章主要介紹了Python實(shí)現(xiàn)的簡(jiǎn)單計(jì)算器功能,結(jié)合實(shí)例形式詳細(xì)分析了Python實(shí)現(xiàn)計(jì)算器功能的具體步驟、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python實(shí)現(xiàn)的簡(jiǎn)單計(jì)算器功能。分享給大家供大家參考,具體如下:

使用python編寫一款簡(jiǎn)易的計(jì)算器


計(jì)算器效果圖

首先搭建計(jì)算器的面板:


計(jì)算器面板結(jié)構(gòu)

建造一個(gè)繼承于wx.Frame的frame,在init屬性函數(shù)中搭建面板

class CalcFrame(wx.Frame):#建造一個(gè)繼承于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=""#記錄一個(gè)等式,把它print到TextCtrl中

建立計(jì)算機(jī)顯示屏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')#設(shè)置字體樣式
    self.textprint.SetFont(self.bgFont)#使用SetFont將設(shè)置的字體樣式運(yùn)用在textprint中
    self.textprint.SetForegroundColour('black')#設(shè)置前景色
    self.textprint.SetBackgroundColour('white')#設(shè)置后景色

按鈕

    self.buttonData="7 8 9 DEL 4 5 6 AC 1 2 3 * / + - =".split()
    #產(chǎn)生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里

創(chuàng)建不同按鈕觸發(fā)的不同函數(shù)

  def createHandler(self,button,labels):
    #self.Bind(wx.EVT_BUTTON, self.OnButton1, self.Button1)
    #這里self是一個(gè)Frame(wxPython中的窗體這樣的東西),而B(niǎo)utton1是放在這個(gè)Frame下面的一個(gè)Button,self.OnButton1就是事件處理函數(shù)。而wxPython定死了事件處理函數(shù)的形式:
    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)

不同函數(shù)的具體執(zhí)行過(guò)程

  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)#執(zhí)行這段代碼得到的結(jié)果
      self.equation=str(taget)
      self.textprint.SetValue(self.equation)
    except SyntaxError:#彈出消息對(duì)話框
      dlg=wx.MessageDialog(self,u'輸入格式錯(cuò)誤',wx.Ok|wx.ICON_INFORMATION)
      dlg.ShowModal()
      dlg.Destory()

APP類

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

測(cè)試代碼:

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

完整示例代碼如下:

# -*- coding:utf-8 -*-
'''
Created on 2018年8月25日
@author: Administrator
'''
import wx
class CalcFrame(wx.Frame):#建造一個(gè)繼承于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=""#記錄一個(gè)等式,把它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')#設(shè)置字體樣式
    self.textprint.SetFont(self.bgFont)#使用SetFont將設(shè)置的字體樣式運(yùn)用在textprint中
    self.textprint.SetForegroundColour('black')#設(shè)置前景色
    self.textprint.SetBackgroundColour('white')#設(shè)置后景色
    self.buttonData="7 8 9 DEL 4 5 6 AC 1 2 3 * / + - =".split()
    #產(chǎn)生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是一個(gè)Frame(wxPython中的窗體這樣的東西),而B(niǎo)utton1是放在這個(gè)Frame下面的一個(gè)Button,self.OnButton1就是事件處理函數(shù)。而wxPython定死了事件處理函數(shù)的形式:
    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)#執(zhí)行這段代碼得到的結(jié)果
      self.equation=str(taget)
      self.textprint.SetValue(self.equation)
    except SyntaxError:#彈出消息對(duì)話框
      dlg=wx.MessageDialog(self,u'輸入格式錯(cuò)誤',wx.Ok|wx.ICON_INFORMATION)
      dlg.ShowModal()
      dlg.Destory()
class App(wx.App):
  def OnInit(self):
    self.frame =CalcFrame(u'計(jì)算器')
    self.frame.Center()
    self.frame.Show()
    return True
if __name__=="__main__":
  app=App()
  app.MainLoop()

PS:這里再為大家推薦幾款計(jì)算工具供大家進(jìn)一步參考借鑒:

在線一元函數(shù)(方程)求解計(jì)算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi

科學(xué)計(jì)算器在線使用_高級(jí)計(jì)算器在線計(jì)算:
http://tools.jb51.net/jisuanqi/jsqkexue

在線計(jì)算器_標(biāo)準(zhǔn)計(jì)算器:
http://tools.jb51.net/jisuanqi/jsq

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python全棧開(kāi)發(fā)語(yǔ)法總結(jié)

    python全棧開(kāi)發(fā)語(yǔ)法總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python全棧開(kāi)發(fā)語(yǔ)法的相關(guān)總結(jié)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)參考下。
    2020-11-11
  • python函數(shù)默認(rèn)參數(shù)使用避坑指南

    python函數(shù)默認(rèn)參數(shù)使用避坑指南

    這篇文章主要為大家介紹了python函數(shù)默認(rèn)參數(shù)使用的踩雷避坑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Python針對(duì)給定列表中元素進(jìn)行翻轉(zhuǎn)操作的方法分析

    Python針對(duì)給定列表中元素進(jìn)行翻轉(zhuǎn)操作的方法分析

    這篇文章主要介紹了Python針對(duì)給定列表中元素進(jìn)行翻轉(zhuǎn)操作的方法,結(jié)合實(shí)例形式分析了Python針對(duì)列表元素基于切片及遍歷輸出兩種翻轉(zhuǎn)操作實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2018-04-04
  • python?OpenCV?圖像通道數(shù)判斷

    python?OpenCV?圖像通道數(shù)判斷

    這篇文章主要介紹了python?OpenCV?圖像通道數(shù)判斷,文章基于Python的相關(guān)內(nèi)容展開(kāi)對(duì)文章主題的詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-04-04
  • 一文搞懂Python中Pandas數(shù)據(jù)合并

    一文搞懂Python中Pandas數(shù)據(jù)合并

    pandas是基于NumPy的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas納入了大量庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效操作大型數(shù)據(jù)集的工具。pandas提供大量快速便捷地處理數(shù)據(jù)的函數(shù)和方法。你很快就會(huì)發(fā)現(xiàn),它是使Python強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一
    2021-11-11
  • Python算法繪制特洛伊小行星群實(shí)現(xiàn)示例

    Python算法繪制特洛伊小行星群實(shí)現(xiàn)示例

    這篇文章主要介紹了Python算法繪制特洛伊小行星群實(shí)現(xiàn)示例,這個(gè)小示例完成后非常的有意思也會(huì)使你在Python學(xué)習(xí)的道路上感到一絲絲小成就
    2021-10-10
  • 分享7個(gè) Python 實(shí)戰(zhàn)項(xiàng)目練習(xí)

    分享7個(gè) Python 實(shí)戰(zhàn)項(xiàng)目練習(xí)

    這篇文章主要介紹了分享7個(gè) Python 實(shí)戰(zhàn)項(xiàng)目代碼,經(jīng)過(guò)Python3.6.4調(diào)試通過(guò)的代碼,就具一點(diǎn)的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • Django項(xiàng)目中添加ldap登陸認(rèn)證功能的實(shí)現(xiàn)

    Django項(xiàng)目中添加ldap登陸認(rèn)證功能的實(shí)現(xiàn)

    這篇文章主要介紹了Django項(xiàng)目中添加ldap登陸認(rèn)證功能的實(shí)現(xiàn),詳細(xì)介紹了django-auth-ldap的使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • python單鏈路性能測(cè)試實(shí)踐

    python單鏈路性能測(cè)試實(shí)踐

    這篇文章主要為大家介紹了python單鏈路性能測(cè)試實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Python?函數(shù)參數(shù)11個(gè)案例分享

    Python?函數(shù)參數(shù)11個(gè)案例分享

    大家好,今天給大家分享一下明哥整理的一篇?Python?參數(shù)的內(nèi)容,內(nèi)容非常的干,全文通過(guò)案例的形式來(lái)理解知識(shí)點(diǎn),自認(rèn)為比網(wǎng)上?80%?的文章講的都要明白,如果你是入門不久的?python?新手,相信本篇文章應(yīng)該對(duì)你會(huì)有不小的幫助,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

育儿| 象山县| 金山区| 邛崃市| 宁夏| 尼玛县| 榕江县| 莱阳市| 安达市| 霍林郭勒市| 五大连池市| 永安市| 松原市| 红桥区| 松滋市| 麟游县| 彭泽县| 兰坪| 灵宝市| 灵山县| 滦南县| 孝感市| 彰化县| 海门市| 鹰潭市| 奉贤区| 玉田县| 灵丘县| 汝州市| 凤翔县| 拉萨市| 四会市| 儋州市| 嘉黎县| 万盛区| 兴义市| 玉林市| 金华市| 密云县| 广汉市| 和顺县|