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.