久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

python帶界面的計(jì)算器

 和相品 2019-07-16
#python中的import語句是用來導(dǎo)入模塊的,,在python模塊庫中有著大量的模塊可供使用,要想使用這些文件需要用import語句把指定模塊導(dǎo)入到當(dāng)前程序中,。
import re#處理字符串的模塊,,如查找特定字符,刪除特定字符,,字符串分割等
import tkinter#Tkinter模塊("Tk 接口")是Python的標(biāo)準(zhǔn)Tk GUI工具包的接口,,位Python的內(nèi)置模塊,直接import tkinter即可使用,。
import tkinter.messagebox#調(diào)用tkinter模塊中的messagebox函數(shù),,這個(gè)是消息框,對(duì)話框的關(guān)鍵,,會(huì)彈出一個(gè)小框
  
#按鈕操作,,點(diǎn)擊按鈕后需要做的處理
def buttonClik(btn):
    content=contentVar.get()#獲取文本框中的內(nèi)容
    #如果已有內(nèi)容是以小數(shù)點(diǎn)開頭的,在前面加0
    if content.startswith('.'):
        content='0'+content#字符串可以直接用+來增加字符
    #根據(jù)不同的按鈕作出不同的反應(yīng)
    if btn in '0123456789':
        content+=btn#0-9中哪個(gè)鍵按下了,,就在content字符串中增添
    elif btn=='.':
        #re.split,,支持正則及多個(gè)字符切割
        lastPart=re.split(r'\+|-|\*|/',content)[-1]#將content從+-*/這些字符的地方分割開來,[-1]表示獲取最后一個(gè)字符
        if '.'in lastPart:
            tkinter.messagebox.showerror('錯(cuò)誤','重復(fù)出現(xiàn)的小數(shù)點(diǎn)')#出現(xiàn)對(duì)話框,,并提示信息
            return
        else:
            content+=btn
    elif btn=='C':
        content=''#清除文本框
    elif btn=='=':
        try:
            #對(duì)輸入的表達(dá)式求值
            content=str(eval(content))#調(diào)用函數(shù)eval,,用字符串計(jì)算出結(jié)果
        except:
            tkinter.messagebox.showerror('錯(cuò)誤','表達(dá)式有誤')
            return
    elif btn in operators:
        if content.endswith(operators):#如果content中最后出現(xiàn)的+-*/
            tkinter.messagebox.showerror('錯(cuò)誤','不允許存在連續(xù)運(yùn)算符')
            return
        content+=btn
    elif btn=='Sqrt':
        n=content.split('.')#從.處分割存入n,n是一個(gè)列表
        if all(map(lambda x:x.isdigit(),n)):#如果列表中所有的都是數(shù)字,,就是為了檢查表達(dá)式是不是正確的
            content=eval(content)**0.5
        else:
            tkinter.messagebox.showerror('錯(cuò)誤','表達(dá)式錯(cuò)誤')
            return
    contentVar.set(content)#將結(jié)果顯示到文本框中
  
  
root=tkinter.Tk()#生成主窗口,,用root表示,后面就在root操作
#設(shè)置窗口大小和位置可直接聯(lián)系客服QQ交代需求:953586085
歡迎光臨程序代寫小店https://item.taobao.com/item.htm?spm=a230r.1.14.59.255028c3ALNkZ0&id=586797758241&ns=1&abbucket=15#detail
root.geometry('300x270+400+100')#指定主框體大小
#不允許改變窗口大小
root.resizable(False,False)#框體大小可調(diào)性,,分別表示x,y方向的可變性,;
#設(shè)置窗口標(biāo)題
root.title('計(jì)算器')
  
#文本框和按鈕都是tkinter中的組件
#Entry           文本框(單行);
#Button          按鈕,;
#放置用來顯示信息的文本框,,設(shè)置為只讀
#tkinter.StringVar    能自動(dòng)刷新的字符串變量,可用set和get方法進(jìn)行傳值和取值
contentVar=tkinter.StringVar(root,'')
contentEntry=tkinter.Entry(root,textvariable=contentVar)#括號(hào)里面,,可見第一個(gè)都是root,即表示都是以root為主界面的,,將文本框中的內(nèi)容存在contentVar中
contentEntry['state']='readonly'#文本框只能讀,不能寫
contentEntry.place(x=10,y=10,width=280,height=20)#文本框在root主界面的xy坐標(biāo)位置,,以及文本框自生的寬和高
#x:            組件左上角的x坐標(biāo),;
#y:             組件右上角的y坐標(biāo),;
#放置清除按鈕和等號(hào)按鈕
btnClear=tkinter.Button(root,text='C',bg = 'red',command=lambda:buttonClik('C'))#在root主界面中放置按鈕,按鈕上顯示C,,紅色,點(diǎn)擊按鈕后進(jìn)入buttonClik回調(diào)函數(shù)做進(jìn)一步的處理,,注意傳入了參數(shù)‘C’,,這樣就能分清是哪個(gè)按鈕按下了
#下面的內(nèi)容和上面的模式都是一樣的
btnClear.place(x=40,y=40,width=80,height=20)
btnCompute=tkinter.Button(root,text='=',bg = 'yellow',command=lambda :buttonClik('='))
btnCompute.place(x=170,y=40,width=80,height=20)
  
#放置10個(gè)數(shù)字、小數(shù)點(diǎn)和計(jì)算平方根的按鈕
digits=list('0123456789.')+['Sqrt']#序列l(wèi)ist是Python中最基本的數(shù)據(jù)結(jié)構(gòu),。序列中的每個(gè)元素都分配一個(gè)數(shù)字 - 它的位置,,或索引,第一個(gè)索引是0,,第二個(gè)索引是1,,依此類推。
index=0
#用循環(huán)的方式將上面數(shù)字,、小數(shù)點(diǎn),、平方根這12個(gè)按鈕分成四行三列進(jìn)行放置
for row in range(4):
    for col in range(3):
        d=digits[index]#按索引從list中取值,和c語言中的數(shù)組類似
        index+=1#索引號(hào)遞增
        btnDigit=tkinter.Button(root,text=d,command=lambda x=d:buttonClik(x))#和上面的是類似的
        btnDigit.place(x=20+col*70,y=80+row*50,width=50,height=20)#很顯然,,每次放一個(gè)按鈕的位置是不一樣的,,但是它們之間的關(guān)系時(shí)確定的
#放置運(yùn)算符按鈕
operators=('+','-','*','/','**','//')#Python的元組與列表類似,不同之處在于元組的元素不能修改,。
#元組使用小括號(hào),,列表使用方括號(hào)。
#enumerate() 函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表,、元組或字符串)組合為一個(gè)索引序列,,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中,。
for index,operator in enumerate(operators):
    btnOperator=tkinter.Button(root,text=operator,bg = 'orange',command=lambda x=operator:buttonClik(x))#創(chuàng)建的過程和上面類似
    btnOperator.place(x=230,y=80+index*30,width=50,height=20)
  
root.mainloop()#進(jìn)入消息循環(huán)(必需組件)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多