當前位置:成語大全網 - 新華字典 - python計算器

python計算器

python計算器實現:

wx.TextCtrl(文本輸入控件),這個作為計算器的顯示屏,點擊數字時用AppendText方法將數字添加至文本末尾,要取出數字時用GetValue方法,點擊運算符時要將文本框中的數字清空(先存儲)用Clear方法然後還有將操作符保存,點擊等號後要將第二個操作數存儲,然後用int方法將字符串轉換為數字,計算後用SetValue方法將結果送入文本框,具體代碼如下:

import?wx

#?begin?wxGlade:?extracode

#?end?wxGlade

class?MyFrame(wx.Frame):

def?__init__(self,?*args,?**kwds):

#?begin?wxGlade:?MyFrame.__init__

kwds["style"]?=?wx.DEFAULT_FRAME_STYLE

wx.Frame.__init__(self,?*args,?**kwds)

self.text_ctrl_1?=?wx.TextCtrl(self,?-1,?"",style=wx.TE_READONLY)

self.button_37?=?wx.Button(self,?-1,?"1")

self.button_38?=?wx.Button(self,?-1,?"2")

self.button_39?=?wx.Button(self,?-1,?"3")

self.button_40?=?wx.Button(self,?-1,?"+")

self.button_41?=?wx.Button(self,?-1,?"4")

self.button_42?=?wx.Button(self,?-1,?"5")

self.button_43?=?wx.Button(self,?-1,?"6")

self.button_44?=?wx.Button(self,?-1,?"-")

self.button_46?=?wx.Button(self,?-1,?"7")

self.button_45?=?wx.Button(self,?-1,?"8")

self.button_47?=?wx.Button(self,?-1,?"9")

self.button_48?=?wx.Button(self,?-1,?"x")

self.button_49?=?wx.Button(self,?-1,?"C")

self.button_50?=?wx.Button(self,?-1,?"0")

self.button_51?=?wx.Button(self,?-1,?"=")

self.button_52?=?wx.Button(self,?-1,?"/")

self.__set_properties()

self.__do_layout()

self.Bind(wx.EVT_BUTTON,?self.bu1,?self.button_37)

self.Bind(wx.EVT_BUTTON,?self.bu2,?self.button_38)

self.Bind(wx.EVT_BUTTON,?self.bu3,?self.button_39)

self.Bind(wx.EVT_BUTTON,?self.bu_plus,?self.button_40)

self.Bind(wx.EVT_BUTTON,?self.bu4,?self.button_41)

self.Bind(wx.EVT_BUTTON,?self.bu5,?self.button_42)

self.Bind(wx.EVT_BUTTON,?self.bu6,?self.button_43)

self.Bind(wx.EVT_BUTTON,?self.bu_min,?self.button_44)

self.Bind(wx.EVT_BUTTON,?self.bu7,?self.button_46)

self.Bind(wx.EVT_BUTTON,?self.bu8,?self.button_45)

self.Bind(wx.EVT_BUTTON,?self.bu9,?self.button_47)

self.Bind(wx.EVT_BUTTON,?self.bu_mul,?self.button_48)

self.Bind(wx.EVT_BUTTON,?self.bu_clear,?self.button_49)

self.Bind(wx.EVT_BUTTON,?self.bu0,?self.button_50)

self.Bind(wx.EVT_BUTTON,?self.bu_result,?self.button_51)

self.Bind(wx.EVT_BUTTON,?self.bu_chu,?self.button_52)

#?end?wxGlade

self.Show(True)

def?__set_properties(self):

#?begin?wxGlade:?MyFrame.__set_properties

self.SetTitle("Python?Calculater?by?CYG")

self.text_ctrl_1.SetMinSize((400,?50))

self.button_37.SetMinSize((100,?50))

self.button_38.SetMinSize((100,?50))

self.button_39.SetMinSize((100,?50))

self.button_40.SetMinSize((100,?50))

self.button_41.SetMinSize((100,?50))

self.button_42.SetMinSize((100,?50))

self.button_43.SetMinSize((100,?50))

self.button_44.SetMinSize((100,?50))

self.button_46.SetMinSize((100,?50))

self.button_45.SetMinSize((100,?50))

self.button_47.SetMinSize((100,?50))

self.button_48.SetMinSize((100,?50))

self.button_49.SetMinSize((100,?50))

self.button_50.SetMinSize((100,?50))

self.button_51.SetMinSize((100,?50))

self.button_52.SetMinSize((100,?50))

#?end?wxGlade

def?__do_layout(self):

#?begin?wxGlade:?MyFrame.__do_layout

sizer_2?=?wx.BoxSizer(wx.VERTICAL)

sizer_3?=?wx.BoxSizer(wx.VERTICAL)

grid_sizer_1?=?wx.GridSizer(4,?4,?0,?0)

sizer_3.Add(self.text_ctrl_1,?0,?0,?0)

grid_sizer_1.Add(self.button_37,?0,?0,?0)

grid_sizer_1.Add(self.button_38,?0,?0,?0)

grid_sizer_1.Add(self.button_39,?0,?0,?0)

grid_sizer_1.Add(self.button_40,?0,?0,?0)

grid_sizer_1.Add(self.button_41,?0,?0,?0)

grid_sizer_1.Add(self.button_42,?0,?0,?0)

grid_sizer_1.Add(self.button_43,?0,?0,?0)

grid_sizer_1.Add(self.button_44,?0,?0,?0)

grid_sizer_1.Add(self.button_46,?0,?0,?0)

grid_sizer_1.Add(self.button_45,?0,?0,?0)

grid_sizer_1.Add(self.button_47,?0,?0,?0)

grid_sizer_1.Add(self.button_48,?0,?0,?0)

grid_sizer_1.Add(self.button_49,?0,?0,?0)

grid_sizer_1.Add(self.button_50,?0,?0,?0)

grid_sizer_1.Add(self.button_51,?0,?0,?0)

grid_sizer_1.Add(self.button_52,?0,?0,?0)

sizer_3.Add(grid_sizer_1,?1,?wx.EXPAND,?0)

sizer_2.Add(sizer_3,?1,?wx.EXPAND,?0)

self.SetSizer(sizer_2)

sizer_2.Fit(self)

self.Layout()

#?end?wxGlade

def?bu1(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.AppendText("1")

event.Skip()

def?bu2(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.AppendText("2")

event.Skip()

def?bu3(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.AppendText("3")

event.Skip()

def?bu_plus(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.num1=self.text_ctrl_1.GetValue()

self.op="+"

self.text_ctrl_1.Clear()

event.Skip()

def?bu4(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.AppendText("4")

event.Skip()

def?bu5(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.AppendText("5")

event.Skip()

def?bu6(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.AppendText("6")

event.Skip()

def?bu_min(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.num1=self.text_ctrl_1.GetValue()

self.op="-"

self.text_ctrl_1.Clear()

event.Skip()

def?bu7(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.AppendText("7")

event.Skip()

def?bu8(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.AppendText("8")

event.Skip()

def?bu9(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.AppendText("9")

event.Skip()

def?bu_mul(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.num1=self.text_ctrl_1.GetValue()

self.op="x"

self.text_ctrl_1.Clear()

event.Skip()

def?bu_clear(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.Clear()

event.Skip()

def?bu0(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.text_ctrl_1.AppendText("0")

event.Skip()

def?bu_chu(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.num1=self.text_ctrl_1.GetValue()

self.op="/"

self.text_ctrl_1.Clear()

event.Skip()

def?bu_result(self,?event):?#?wxGlade:?MyFrame.<event_handler>

self.num2=self.text_ctrl_1.GetValue()

num1=int(self.num1)

num2=int(self.num2)

if?self.op=="+":

self.text_ctrl_1.SetValue(str(num1+num2))

elif?self.op=="-":

self.text_ctrl_1.SetValue(str(num1-num2))

elif?self.op=="x":

self.text_ctrl_1.SetValue(str(num1*num2))

elif?self.op=="/":

self.text_ctrl_1.SetValue(str(num1/num2))

event.Skip()

#?end?of?class?MyFrame

if?__name__?==?"__main__":

app=wx.App(False)

myframe=MyFrame(None)

app.MainLoop()