<兄弟連Python06前期計算器————知識點 沒學多久Python,沒有各位大神趟的水多。電腦弄了一兩天,做的比較糙。菜單基本是廢了/(ㄒoㄒ)/~~。。。。。。函數部分本來還要有個開平方,實在沒做出來還望看到的大神指點一下。 邏輯基本是按照輸入數字——輸入運算符——輸入數字——‘=’號運算結 ...
<兄弟連Python06前期計算器————知識點
import tkinter class jsq: #界面佈局方法 def __init__(self): self.root=tkinter.Tk() self.root.minsize(300,450) self.root.maxsize(300,450) self.root.title('計算器') #全局化變數 #存儲數字與符號變數 self.lists=[] #假定按下符號鍵為錯 self.isPressSign=False #初始化界面數字為0 self.res = tkinter.StringVar() self.res.set(0) #將運算過成輸入到第一行中去包括符號案件( self.res2=tkinter.StringVar() #界面佈局 self. xsmb() self.caidan() self.root.mainloop() def caidan (self): # 創建總菜單 menubar =tkinter.Menu(self.root) # 創建一個下拉菜單,並且加入文件菜單 filemenu = tkinter.Menu(menubar) # 創建查看菜單的選項 filemenu.add_command(label="打開", command=self.caidan) filemenu.add_command(label="存儲", command=self.caidan) # 創建下拉菜單的分割線 filemenu.add_separator() filemenu.add_command(label="關閉", command=self.root.quit) # 將文件菜單作為下拉菜單添加到總菜單中,並且將命名為File menubar.add_cascade(label="菜單", menu=filemenu) # 創建編輯菜單 editmenu = tkinter.Menu(menubar, tearoff=0) # 創建編輯菜單選項 editmenu.add_command(label='複製(C)', command=self.caidan) editmenu.add_command(label='粘貼(P)', command=self.caidan) menubar.add_cascade(label="編輯", menu=editmenu) # 顯示總菜單 self.root.config(menu=menubar) #按下數字的操作數字方法 def szbtn(self,num): #按下符號鍵輸出0 if self.isPressSign==False: pass else: self.res.set(0) #重新賦值按下符號鍵為假 self.isPressSign=False #賦值輸入的數字為oldnum oldnum=self.res.get() #判斷初始數字數否為0,是輸出輸入數字,不是將本次數字添加到新數字中輸出 if oldnum=='0': self.res.set(num) else: newnum=oldnum+num self.res.set(newnum) #按下符號鍵操作方法 def pressCompute(self,sign): #將輸入的數字和數入的符號都存到列表中 num = self.res.get() self.lists.append(num) self.lists.append(sign) #後退鍵功能 if sign=='<--': l=num[0:-1] self.res.set(l) #判斷輸入字元是否為清除鍵 if sign=='c': self.lists.clear() self.res.set(0) #if sign=='√': #self.res.set(math.sqrt(num)) #重置按鍵為真 self.isPressSign=True #輸出運算結果 def pressEqual(self): #將按下運算符在次按下的數字添加到列表中 curnum = self.res.get() self.lists.append(curnum) #按下等號觸發已保存字元運算 computeStr=''.join(self.lists) endnum=eval(computeStr) #運算結束後將儲存的運算過程輸出到第一個文本框 self.res2.set(computeStr) #輸出結果清出列表 self.res.set(endnum) self.lists.clear() #佈局界面文本框和按鍵方法 def xsmb(self): lable=tkinter.Label(self.root,textvariable=self.res,bg='white',font=('黑體',20),anchor='e') lable.place(x=20,y=20,width=260,height=60) lable2=tkinter.Label(self.root,textvariable=self.res2,bg='blue',font=('宋體',10),anchor='e') lable2.place(x=20,y=20,width=260,height=20) #第一行符號鍵 btnyichu=tkinter.Button(self.root,text='<--',font=('黑體',20),command=lambda :self.pressCompute('<--')) btnyichu.place(x=20,y=100,width=95,height=40) btnclear=tkinter.Button(self.root,text='c',font=('黑體',20),command=lambda :self.pressCompute('c')) btnclear.place(x=130,y=100,width=40,height=40) #btnsqrt = tkinter.Button(self.root, text='√', font=('黑體', 20), command=lambda: self.pressCompute('√')) #btnsqrt.place(x=185, y=100, width=40, height=40) btnmiyunsuan=tkinter.Button(self.root,text='**',font=('黑體',20),command=lambda :self.pressCompute('**')) btnmiyunsuan.place(x=240,y=100,width=40,height=40) #第一行數字鍵 btn1=tkinter.Button(self.root,text='1',font=('黑體',20),command=lambda :self.szbtn('1')) btn1.place(x=20,y=160,width=40,height=40) btn2=tkinter.Button(self.root,text='2',font=('黑體',20),command=lambda :self.szbtn('2')) btn2.place(x=75,y=160,width=40,height=40) btn3=tkinter.Button(self.root,text='3',font=('黑體',20),command=lambda :self.szbtn('3')) btn3.place(x=130,y=160,width=40,height=40) #第二行符號鍵,除法和地板除 btnchu=tkinter.Button(self.root,text='/',font=('黑體',20),command=lambda :self.pressCompute('/')) btnchu.place(x=185,y=160,width=40,height=40) btndibanchu=tkinter.Button(self.root,text='//',font=('黑體',20),command=lambda :self.pressCompute('//')) btndibanchu.place(x=240,y=160,width=40,height=40) #第二行數字鍵 btn4=tkinter.Button(self.root,text='4',font=('黑體',20),command=lambda :self.szbtn('4')) btn4.place(x=20,y=220,width=40,height=40) btn5=tkinter.Button(self.root,text='5',font=('黑體',20),command=lambda :self.szbtn('5')) btn5.place(x=75,y=220,width=40,height=40) btn6=tkinter.Button(self.root,text='6',font=('黑體',20),command=lambda :self.szbtn('6')) btn6.place(x=130,y=220,width=40,height=40) #第三行符號,乘法,取於運算 btncheng=tkinter.Button(self.root,text='*',font=('黑體',20),command=lambda :self.pressCompute('*')) btncheng.place(x=185,y=220,width=40,height=40) btnquyu=tkinter.Button(self.root,text='%',font=('黑體',20),command=lambda :self.pressCompute('%')) btnquyu.place(x=240,y=220,width=40,height=40) btn7=tkinter.Button(self.root,text='7',font=('黑體',20),command=lambda :self.szbtn('7')) btn7.place(x=20,y=280,width=40,height=40) btn8=tkinter.Button(self.root,text='8',font=('黑體',20),command=lambda :self.szbtn('8')) btn8.place(x=75,y=280,width=40,height=40) btn9=tkinter.Button(self.root,text='9',font=('黑體',20),command=lambda :self.szbtn('9')) btn9.place(x=130,y=280,width=40,height=40) btnjian=tkinter.Button(self.root,text='-',font=('黑體',20),command=lambda :self.pressCompute('-')) btnjian.place(x=185,y=280,width=40,height=40) btn0=tkinter.Button(self.root,text='0',font=('黑體',20),command=lambda :self.szbtn('0')) btn0.place(x=20,y=340,width=95,height=40) btndian=tkinter.Button(self.root,text='.',font=('黑體',20),command=lambda :self.szbtn('.')) btndian.place(x=130,y=340,width=40,height=40) btnjia=tkinter.Button(self.root,text='+',font=('黑體',20),command=lambda :self.pressCompute('+')) btnjia.place(x=185,y=340,width=40,height=40) btndeng=tkinter.Button(self.root,text='=',font=('黑體',20),command=lambda :self.pressEqual()) btndeng.place(x=240,y=280,width=40,height=100) jsq()
沒學多久Python,沒有各位大神趟的水多。電腦弄了一兩天,做的比較糙。菜單基本是廢了/(ㄒoㄒ)/~~。。。。。。函數部分本來還要有個開平方,實在沒做出來還望看到的大神指點一下。
邏輯基本是按照輸入數字——輸入運算符——輸入數字——‘=’號運算結果。
目前還有多處bug:已知1運算結束後輸出結果在輸入數字是直接添加到結果上的。
2多次按下等號鍵只能運算一次不能直接用等號直接進行多次運算。
3第一排記錄的文本框不是從開始輸入就上傳另運算結束不能按鍵清楚用戶體驗較差
。。。。。
由於還有較多功能未實現,操作不佳還望見諒
python學習資源分享群:563626388 QQ
>