學(xué)了一周的Python,這篇文章算是為這段時(shí)間自學(xué)做的小總結(jié)。
一、Python簡(jiǎn)介
Python是一門十分優(yōu)美的腳本語(yǔ)言,如果學(xué)過(guò)java、c++那入門Python是非常簡(jiǎn)單的。Python具有豐富和強(qiáng)大的類庫(kù)。它常被昵稱為膠水語(yǔ)言,它能夠很輕松的把用其他語(yǔ)言制作的各種模塊(尤其是C/C++)輕松地聯(lián)結(jié)在一起。常見的一種應(yīng)用情形是,使用Python快速生成程序的原型(有時(shí)甚至是程序的最終界面),然后對(duì)其中有特別要求的部分,用更合適的語(yǔ)言改寫。
二、Python版計(jì)算器的實(shí)現(xiàn)
工具準(zhǔn)備:
1. Python2.7
2. wxPython
3. wxGlade界面編輯工具
4. pyCharm
具體配置什么的我就不說(shuō)了,網(wǎng)上有很多。Python的GUI開發(fā)庫(kù)有很多,這里我們使用wxPython。用wxGlade編輯界面,wxGlade是一款很好用的GUI編輯工具,它最大的優(yōu)點(diǎn)是能自動(dòng)生成編輯好的圖形界面的代碼。
這里主要介紹幾點(diǎn):
wx.TextCtrl(文本輸入控件),這個(gè)作為計(jì)算器的顯示屏,點(diǎn)擊數(shù)字時(shí)用AppendText方法將數(shù)字添加至文本末尾,要取出數(shù)字時(shí)用GetValue方法,點(diǎn)擊運(yùn)算符時(shí)要將文本框中的數(shù)字清空(先存儲(chǔ))用Clear方法然后還有將操作符保存,點(diǎn)擊等號(hào)后要將第二個(gè)操作數(shù)存儲(chǔ),然后用int方法將字符串轉(zhuǎn)換為數(shù)字,計(jì)算后用SetValue方法將結(jié)果送入文本框,具體代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
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() |
按鈕的ID,名稱什么的我基本都是用wxGlade自動(dòng)生成的。
沒(méi)有做什么美化,只是為了練練手,給張圖:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:http://blog.csdn.net/cyg0810/article/details/23865543