Python provides a simple calculator and python provides a calculator.

Source: Internet
Author: User

Python provides a simple calculator and python provides a calculator.

I learned Python for a week. This article is a small summary of my self-study in this period.

1. Introduction to Python

Python is a very elegant scripting language. If you have studied java and c ++, it is very simple to get started with Python. Python has rich and powerful class libraries. It is often called the glue language. It can easily connect various modules made in other languages (especially C/C ++. A common application scenario is to use Python to quickly generate a prototype of a program (sometimes even the final interface of the Program) and then have a special requirement on it, rewrite in a more appropriate language.

Ii. Python version calculator implementation

Tool preparation:

1. Python2.7
2. wxPython
3. wxGlade interface editing tool
4. pyCharm

I will not talk about the specific configuration, but there are many websites. There are many Python GUI development libraries. Here we use wxPython. WxGlade is an easy-to-use GUI editing tool. Its biggest advantage is that it can automatically generate the edited graphic interface code.

Here we mainly introduce the following points:

Wx. textCtrl (text input control), which is used as the display screen of the calculator. When you click a number, use the AppendText method to add the number to the end of the text. to retrieve the number, use the GetValue method, when you click an operator, you need to Clear the numbers in the text box (store them first), use the Clear method, and save the operator. Click the equal sign to store the second operand, then, use the int method to convert the string to a number. After calculation, use the SetValue method to send the result to the text box. The specific code is as follows:

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

The button ID and name are automatically generated by wxGlade.
I didn't do any beautification. I just gave a picture to my trainer:

The above is all the content of this article. I hope it will be helpful for your learning and support for helping customers.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.