您好,登錄后才能下訂單哦!
import tkinter #定義計算器類 class Calc: #初始化魔術方法 def __init__(self): #初始化共用屬性 #定義一個用于存放被計算字符串的列表 self.operationList = [] #定義運算標記 確定是否輸入了運算符號 self.isOper = False #初始化界面 self.initWindows() #更改按鍵盤顏色方法 def changeBg(self,evt): evt.widget['bg'] = 'cyan' #恢復按鍵盤顏色方法 def backBg(self,evt): evt.widget['bg'] = 'lightgray' #數字按鈕操作方法 def buttonAction(self,number): #判斷用戶是否按下了運算按鈕 if self.isOper == True: #在界面上顯示運算符之后的數 self.num.set(number) #運算標記復位 self.isOper = False else: #沒有銨下運算按鈕 #判斷原始界面數字是否為0 existNumber = self.num.get() if existNumber == '0': #如果界面中的初始數據為0 則獲取用戶輸入數據并顯示 self.num.set(number) else: #如果界面中的初始數據不為0 則對字符進行累加 self.num.set(self.num.get()+number) #運算按鈕操作方法 def operation(self,opFlag): #運算標記置為真 self.isOper = True #獲取界面中存在的數 并且寫入列表 self.operationList.append(self.num.get()) #當前運算符號不會在上一步中寫入 需要單獨寫入 self.operationList.append(opFlag) #獲取運行結果操作方法 def getResult(self): #將當前界面中數字加入計算列表 self.operationList.append(self.num.get()) #開始計算 result = eval(''.join(self.operationList)) self.num.set(result) #全部清空重新計算方法 def clearAll(self): #界面置0 計算列表置0 self.num.set('0') self.operationList.clear() #運算標志復位 self.isOper = False #實現退格鍵方法 def backSpace(self): #獲取當前顯示數字長度 strLength = len(self.num.get()) #如果當前顯示有數字 if strLength > 1: #刪除字串中最后一個字 presentStr = self.num.get() presentStr = presentStr[:strLength - 1] self.num.set(presentStr) else: self.num.set('0') #正負號實現方法 def pm(self): presentStr = self.num.get() #實現增加和去除負號 if presentStr[0] == '-': self.num.set(presentStr[1:]) #原始字串不得以-號和0開頭 elif presentStr[0] not in ('-','0'): self.num.set('-'+presentStr) #界面布局方法 def initWindows(self): #生成主窗口 定制窗口尺寸 root = tkinter.Tk() root.minsize(400,500) root.title('微硬計算器') #生成用于保存數值的變量 self.num = tkinter.StringVar() self.num.set(0) #運算結果輸出位置 result = tkinter.Label(root,width=20,height=2,bg='white',bd=10,anchor='e',font=('宋體',50),textvariable=self.num) result.place(relx=0,rely=0,relwidth=1.0,relheight=0.4) ###########################以下為按鍵部分############################ buttonCE = tkinter.Button(root,text='CE',bg='lightgray',command = self.clearAll) buttonCE.place(relx=0,rely=0.4,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 buttonCE.bind('<Enter>',self.changeBg) buttonCE.bind('<Leave>',self.backBg) buttonC = tkinter.Button(root,text='C',bg='lightgray',command = self.clearAll) buttonC.place(relx=0.25,rely=0.4,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 buttonC.bind('<Enter>',self.changeBg) buttonC.bind('<Leave>',self.backBg) buttonDel = tkinter.Button(root,text='<-',bg='lightgray',command = self.backSpace) buttonDel.place(relx=0.5,rely=0.4,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 buttonDel.bind('<Enter>',self.changeBg) buttonDel.bind('<Leave>',self.backBg) buttonDiv = tkinter.Button(root,text='÷',bg='lightgray',command = lambda : self.operation('/')) buttonDiv.place(relx=0.75,rely=0.4,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 buttonDiv.bind('<Enter>',self.changeBg) buttonDiv.bind('<Leave>',self.backBg) button1 = tkinter.Button(root,text='1',bg='lightgray',command = lambda : self.buttonAction('1')) button1.place(relx=0,rely=0.5,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button1.bind('<Enter>',self.changeBg) button1.bind('<Leave>',self.backBg) button2 = tkinter.Button(root,text='2',bg='lightgray',command = lambda : self.buttonAction('2')) button2.place(relx=0.25,rely=0.5,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button2.bind('<Enter>',self.changeBg) button2.bind('<Leave>',self.backBg) button3 = tkinter.Button(root,text='3',bg='lightgray',command = lambda : self.buttonAction('3')) button3.place(relx=0.5,rely=0.5,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button3.bind('<Enter>',self.changeBg) button3.bind('<Leave>',self.backBg) buttonX = tkinter.Button(root,text='x',bg='lightgray',command = lambda : self.operation('*')) buttonX.place(relx=0.75,rely=0.5,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 buttonX.bind('<Enter>',self.changeBg) buttonX.bind('<Leave>',self.backBg) button4 = tkinter.Button(root,text='4',bg='lightgray',command = lambda : self.buttonAction('4')) button4.place(relx=0,rely=0.6,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button4.bind('<Enter>',self.changeBg) button4.bind('<Leave>',self.backBg) button5 = tkinter.Button(root,text='5',bg='lightgray',command = lambda : self.buttonAction('5')) button5.place(relx=0.25,rely=0.6,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button5.bind('<Enter>',self.changeBg) button5.bind('<Leave>',self.backBg) button6 = tkinter.Button(root,text='6',bg='lightgray',command = lambda : self.buttonAction('6')) button6.place(relx=0.5,rely=0.6,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button6.bind('<Enter>',self.changeBg) button6.bind('<Leave>',self.backBg) button_ = tkinter.Button(root,text='-',bg='lightgray',command = lambda : self.operation('-')) button_.place(relx=0.75,rely=0.6,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button_.bind('<Enter>',self.changeBg) button_.bind('<Leave>',self.backBg) button7 = tkinter.Button(root,text='7',bg='lightgray',command = lambda : self.buttonAction('7')) button7.place(relx=0,rely=0.7,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button7.bind('<Enter>',self.changeBg) button7.bind('<Leave>',self.backBg) button8 = tkinter.Button(root,text='8',bg='lightgray',command = lambda : self.buttonAction('8')) button8.place(relx=0.25,rely=0.7,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button8.bind('<Enter>',self.changeBg) button8.bind('<Leave>',self.backBg) button9 = tkinter.Button(root,text='9',bg='lightgray',command = lambda : self.buttonAction('9')) button9.place(relx=0.5,rely=0.7,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button9.bind('<Enter>',self.changeBg) button9.bind('<Leave>',self.backBg) buttonAdd = tkinter.Button(root,text='+',bg='lightgray',command = lambda : self.operation('+')) buttonAdd.place(relx=0.75,rely=0.7,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 buttonAdd.bind('<Enter>',self.changeBg) buttonAdd.bind('<Leave>',self.backBg) buttonFlag = tkinter.Button(root,text='±',bg='lightgray',command = self.pm) buttonFlag.place(relx=0,rely=0.8,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 buttonFlag.bind('<Enter>',self.changeBg) buttonFlag.bind('<Leave>',self.backBg) button0 = tkinter.Button(root,text='0',bg='lightgray',command = lambda : self.buttonAction('0')) button0.place(relx=0.25,rely=0.8,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 button0.bind('<Enter>',self.changeBg) button0.bind('<Leave>',self.backBg) buttonPoint = tkinter.Button(root,text='.',bg='lightgray',command = lambda : self.buttonAction('.')) buttonPoint.place(relx=0.5,rely=0.8,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 buttonPoint.bind('<Enter>',self.changeBg) buttonPoint.bind('<Leave>',self.backBg) buttonEque = tkinter.Button(root,text='=',bg='lightgray',command = self.getResult) buttonEque.place(relx=0.75,rely=0.8,relwidth=0.25,relheight=0.1) #綁定按鈕 生成鼠標經過變色效果 buttonEque.bind('<Enter>',self.changeBg) buttonEque.bind('<Leave>',self.backBg) #########################以上為按鍵部分############################ #底部顯示信息 bottomLabel = tkinter.Label(root,text = 'Power By Microhard Corpration\n@2017' ,bg='cyan',width=30,height = 1,padx=0) bottomLabel.place(relx=0,rely=0.9,relwidth=1.0,relheight=0.1) #主窗口循環 root.mainloop() #實例化計算器對象 c = Calc()
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。