《Python程序設(shè)計(jì)基礎(chǔ)》課件-第10章 圖形界面設(shè)計(jì)_第1頁
《Python程序設(shè)計(jì)基礎(chǔ)》課件-第10章 圖形界面設(shè)計(jì)_第2頁
《Python程序設(shè)計(jì)基礎(chǔ)》課件-第10章 圖形界面設(shè)計(jì)_第3頁
《Python程序設(shè)計(jì)基礎(chǔ)》課件-第10章 圖形界面設(shè)計(jì)_第4頁
《Python程序設(shè)計(jì)基礎(chǔ)》課件-第10章 圖形界面設(shè)計(jì)_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄CONTENT01020304窗口常用tkinter組件的使用Python事件處理學(xué)生成績(jī)處理案例01窗口

MORETHENTEMPLATEPython提供了多個(gè)圖形開發(fā)界面庫,常用的GUI庫有:Tkinter庫、wxPython庫、Jython庫等。其中,Tkinter庫是一個(gè)輕量級(jí)的跨平臺(tái)的圖形用戶界面開發(fā)工具,可以運(yùn)行在大多數(shù)的Unix平臺(tái)、Windows平臺(tái)和Mac系統(tǒng)上。另外,Tkinter庫為python內(nèi)置的標(biāo)準(zhǔn)庫,不需要單獨(dú)安裝,只需要導(dǎo)入就可以使用,非常方便。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院310.1窗口

MORETHENTEMPLATE10.1窗口10.1.1窗口的創(chuàng)建窗口是一個(gè)容器,窗口可以放置各種各樣的組件,如標(biāo)簽、按鈕、文本框等。要?jiǎng)?chuàng)建界面,首先要?jiǎng)?chuàng)建窗口,窗口的創(chuàng)建方法如下:win=tkinter.Tk()窗口容器的常用方法見表10-1。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院410.1窗口

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院510.1窗口表101窗口容器的常用方法表101窗口容器的常用方法方法功能說明title(string)設(shè)置窗口的標(biāo)題為stringgeometry(newGeometry)設(shè)置窗口的長(zhǎng)寬和位置,參數(shù)為字符串,形式如下:"widthxheightxy"。其中“+”表示與屏幕左邊或者上方的距離,“-”表示與屏幕右邊或者下方的距離。例如"400x300+100+200"表示寬度400,高度300,窗口與屏幕左邊的距離100,與屏幕上方的距離200。state(newstate)設(shè)置窗口最大化(zoomed)、最小化(iconic)、普通窗口(normal)maxsize(width,height)設(shè)置窗口的最大尺寸minsize(width,height)設(shè)置窗口的最小尺寸表10-1窗口容器的常用方法

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院610.1.1窗口的創(chuàng)建【例10-1】窗口的創(chuàng)建案例,代碼及運(yùn)行效果如下:importtkinter##定義事件處理函數(shù)root=tkinter.Tk()root.title("我的窗口")##設(shè)置窗口標(biāo)題root.geometry("300x200+100+100")##設(shè)置窗口大小及位置root.state("normal")##設(shè)置普通窗口root.minsize(width=100,height=100)##設(shè)置最小尺寸root.maxsize(width=400,height=300)##設(shè)置最大尺寸root.mainloop()運(yùn)行后的結(jié)果如圖10-1所示,當(dāng)拖放窗口大小時(shí),最大尺寸達(dá)到400x300,最小尺寸為100x100,窗口大小只能在最大尺寸和最小尺寸之間進(jìn)行拖放。

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院710.1窗口表101窗口容器的常用方法表101窗口容器的常用方法表10-1窗口容器的常用方法

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院810.1.2幾何布局管理幾何布局管理用于設(shè)置父組件(通常為窗口)上的子組件的布局方式。Tkinter提供了3種布局方式。1、pack布局方式pack()使用方法如下:子組件.pack(parameters)其中parameters為參數(shù),常用參數(shù)見表10-2。參數(shù)說明side表示組件的位置,side取值如下:tkinter.LEFT-左邊;tkinter.RIGHT-右邊;tkinter-TOP-上邊(默認(rèn)值);tkinter-BOTTOM-下邊padx,pady組件在x方向和y方向上與其他組件之間的距離ipadx,ipady組件內(nèi)部在x方向和y方向上的大小fill是否填充,取值如下:x-x方向上填充;y-y方向上填充;both-在x方向和y方向上同時(shí)填充;none-兩個(gè)方向都不填充expand是否啟用擴(kuò)展空間,取值如下:yes-啟用擴(kuò)展空間;no-不啟用擴(kuò)展空間

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院910.1.2幾何布局管理【例10-2】pack()布局使用案例,代碼及運(yùn)行效果如下:importtkinterroot=tkinter.Tk()#標(biāo)簽label=tkinter.Label(root,text="學(xué)生信息管理系統(tǒng)",bg="yellow")label.pack(side=tkinter.TOP,ipady=10,pady=10,fill="x")#按鈕buttonUsername=tkinter.Button(root,text="歡迎登錄",bg="green")buttonUsername.pack(side=tkinter.BOTTOM,expand="yes")root.mainloop()

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院1010.1.2幾何布局管理【例10-2】pack()布局使用案例,代碼及運(yùn)行效果如下:importtkinterroot=tkinter.Tk()#標(biāo)簽label=tkinter.Label(root,text="學(xué)生信息管理系統(tǒng)",bg="yellow")label.pack(side=tkinter.TOP,ipady=10,pady=10,fill="x")#按鈕buttonUsername=tkinter.Button(root,text="歡迎登錄",bg="green")buttonUsername.pack(side=tkinter.BOTTOM,expand="yes")root.mainloop()

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院1110.1.2幾何布局管理這里標(biāo)簽“學(xué)生信息管理系統(tǒng)”設(shè)置fill參數(shù)為“x”,當(dāng)拖動(dòng)窗口時(shí),標(biāo)簽會(huì)在x軸方向上填滿,如果不設(shè)置,則標(biāo)簽的長(zhǎng)度為原始大小。按鈕“歡迎登錄”設(shè)置expand為“yes”,啟用擴(kuò)展空間,則按鈕顯示在下方的中間。如果設(shè)置expand為“no”,則按鈕顯示在最底下。效果如圖10-3所示。

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院1210.1.2幾何布局管理這里標(biāo)簽“學(xué)生信息管理系統(tǒng)”設(shè)置fill參數(shù)為“x”,當(dāng)拖動(dòng)窗口時(shí),標(biāo)簽會(huì)在x軸方向上填滿,如果不設(shè)置,則標(biāo)簽的長(zhǎng)度為原始大小。按鈕“歡迎登錄”設(shè)置expand為“yes”,啟用擴(kuò)展空間,則按鈕顯示在下方的中間。如果設(shè)置expand為“no”,則按鈕顯示在最底下。效果如圖10-3所示。

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院1310.1.2幾何布局管理2、grid布局方式grid()方法采用表格形式布局組件,子組件的位置由行號(hào)和列號(hào)決定。組件可以跨多行和多列,同一列中,列寬由這一列中最寬的那個(gè)單元格決定。grid()使用方法如下:子組件.grid(parameters)其中parameters為參數(shù),常用參數(shù)見表10-3。參數(shù)說明row,column行號(hào)和列號(hào)padx,pady組件在x方向和y方向上與其他組件之間的距離ipadx,ipady組件內(nèi)部在x方向和y方向上的大小rowspan,columnspan行跨度和列跨度sticky組件在單元格中的位置,取值如下:n,s,w,e,nw,ne,sw,se,center,ewsn分別表示東西南北,nw,ne,sw,se表示它們的組合,center為中間(默認(rèn)值)

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院1410.1.2幾何布局管理【例10-3】

grid布局使用案例,代碼及運(yùn)行效果如下:importtkinterroot=tkinter.Tk()#標(biāo)簽labelUsername=tkinter.Label(root,text="用戶名")labelUsername.grid(row=0,column=0,padx=10,pady=10)labelPassword=tkinter.Label(root,text="密碼")labelPassword.grid(row=1,column=0,padx=10,pady=10)#單行文本框輸入entryUsername=tkinter.Entry(root,width=15)entryUsername.grid(row=0,column=1,padx=10,pady=10)entryPassword=tkinter.Entry(root,width=15,show="*")entryPassword.grid(row=1,column=1,padx=10,pady=10)

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院1510.1.2幾何布局管理【例10-3】

grid布局使用案例,代碼及運(yùn)行效果如下:#立即登錄按鈕button=tkinter.Button(root,text="立即登錄")button.grid(row=2,column=0,columnspan=2)##列跨度2列root.mainloop()

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院1610.1.2幾何布局管理3、place布局方式place()方法通過指定組件的x坐標(biāo)和y坐標(biāo)來決定組件的位置。place()使用方法如下:子組件.place(parameters)其中parameters為參數(shù),常用參數(shù)見表10-4。表10-4place常用參數(shù)參數(shù)說明x,y組件的x坐標(biāo)和y坐標(biāo)relx,rely默認(rèn)組件相對(duì)父控件的相對(duì)坐標(biāo)width,height組件的寬度和高度

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院1710.1.2幾何布局管理【例104】place布局使用案例,代碼及運(yùn)行效果如下:importtkinterroot=tkinter.Tk()root.title="學(xué)生信息管理系統(tǒng)"root.geometry("300x200")#標(biāo)簽labelUsername=tkinter.Label(root,text="用戶名")labelUsername.place(x=20,y=40)##絕對(duì)坐標(biāo)labelPassword=tkinter.Label(root,text="密碼")labelPassword.place(x=20,y=90)##絕對(duì)坐標(biāo)

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院1810.1.2幾何布局管理【例104】place布局使用案例,代碼及運(yùn)行效果如下:#單行文本框輸入entryUsername=tkinter.Entry(root,width=15)entryUsername.place(x=120,y=40)##絕對(duì)坐標(biāo)entryPassword=tkinter.Entry(root,width=15,show="*")entryPassword.place(x=120,y=90)##絕對(duì)坐標(biāo)#立即登錄按鈕button=tkinter.Button(root,fg="green",text="立即登錄")button.place(relx=0.4,rely=0.7)##相對(duì)坐標(biāo)root.mainloop()【例104】place布局使用案例,代碼及運(yùn)行效果如下:#單行文本框輸入entryUsername=tkinter.Entry(root,width=15)entryUsername.place(x=120,y=40)##絕對(duì)坐標(biāo)entryPassword=tkinter.Entry(root,width=15,show="*")entryPassword.place(x=120,y=90)##絕對(duì)坐標(biāo)#立即登錄按鈕button=tkinter.Button(root,fg="green",text="立即登錄")button.place(relx=0.4,rely=0.7)##相對(duì)坐標(biāo)root.mainloop()02常用tkinter組件的使用

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院2010.2.1Label組件Label組件用于在指定的窗口中顯示文本和圖像,常用的屬性如表10-1所示。Label組件創(chuàng)建如下:Label=tkinter.Label(master,parameter=values)其中master表示Label組件的父容器。parameter為參數(shù),主要參數(shù)見表10-5。表10-5Label組件常用參數(shù)屬性功能說明width寬度height高度text設(shè)置標(biāo)簽的文本compound設(shè)置文本與圖像的位置關(guān)系。center為文本覆蓋在圖像上;left設(shè)置圖像在文字左邊;right設(shè)置圖像在文字右邊;top設(shè)置圖像在文字上方;bottom設(shè)置文字在圖像下方image顯示自定義圖片,如png,gif等bitmap顯示內(nèi)置的系統(tǒng)圖標(biāo),如question,error,warning,info,hourglassfont標(biāo)簽文字的字體及大小等anchor指定文本或圖像在標(biāo)簽上的位置??蛇x值如下:n(北)、s(南)、w(西)、e(東)以及它們的組合,如nw、ne、sw、se。另外center表示正中間。fg標(biāo)簽的前景色,即字體顏色bg標(biāo)簽的背景色

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院2110.2.1Label組件【例10-5】顯示Label組件,代碼及運(yùn)行效果如下:importtkinterroot=tkinter.Tk()##創(chuàng)建窗口對(duì)象label=tkinter.Label(master=root,text="學(xué)生信息管理系統(tǒng)",anchor="center",fg="green",font=("微軟雅黑",12))label.pack()##顯示標(biāo)簽組件bm=tkinter.PhotoImage(file="e://python教材編寫//第10章案例//book.png")label2=tkinter.Label(fg="green",text="歡迎進(jìn)入",compound="center",font=("微軟雅黑",30),image=bm)label2.pack()root.mainloop()##進(jìn)入消息循環(huán),也就是顯示窗口浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院2210.2.2Button組件Button組件用于實(shí)現(xiàn)各種按鈕。它的主要屬性與Label組件非常相似,但由于Button組件可以響應(yīng)事件,因此,該組件有一個(gè)非常重要的屬性:command屬性,可以設(shè)置當(dāng)用戶單擊該按鈕時(shí)響應(yīng)的函數(shù)或方法。也就是當(dāng)用戶單擊按鈕時(shí),會(huì)自動(dòng)調(diào)用command所設(shè)置的函數(shù)或者方法。Button組件創(chuàng)建如下:button=tkinter.Button(master,parameter=values)其中master表示Button組件的父容器。parameter為參數(shù),主要參數(shù)見表106。屬性功能說明width寬度height高度text設(shè)置按鈕上面顯示的文本compound設(shè)置文本與圖像的位置關(guān)系。center為文本覆蓋在圖像上;left設(shè)置圖像在文字左邊;right設(shè)置圖像在文字右邊;top設(shè)置圖像在文字上方;bottom設(shè)置文字在圖像下方image顯示自定義圖片,如png,gif等bitmap顯示內(nèi)置的系統(tǒng)圖標(biāo),如question,error,warning,info,hourglassfont標(biāo)簽文字的字體及大小等anchor指定文本或圖像在按鈕上的位置??蛇x值如下:n(北)、s(南)、w(西)、e(東)以及它們的組合,如nw、ne、sw、se。另外center表示正中間。fg按鈕的前景色,即字體顏色bg按鈕的背景色command指定Button的事件處理函數(shù)bdButton按鈕邊框的大小

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院2310.2.2Button組件【例10-6】Button按鈕使用案例,代碼及運(yùn)行效果如下所示:importtkinterdefnewwindow():top=tkinter.Toplevel(root)label1=tkinter.Label(master=top,text="已登錄",font=("宋體",14,"bold"))label1.pack()top.mainloop()root=tkinter.Tk()##創(chuàng)建窗口對(duì)象root.geometry("300x100")

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院2410.2.2Button組件##創(chuàng)建標(biāo)簽label=tkinter.Label(master=root,text="學(xué)生信息管理系統(tǒng)",anchor="center",fg="green",font=("微軟雅黑",12))label.pack()##顯示標(biāo)簽bm=tkinter.PhotoImage(file="e://python教材編寫//第10章案例//book.png")button=tkinter.Button(root,fg="green",text="歡迎進(jìn)入",bd=2,command=newwindow,font=("宋體",20,"bold"),bg="yellow")button.pack()root.mainloop()

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院2510.2.3文本框組件文本框組件用于文本的輸入和顯示,有單行文本框組件Entry和多行文本框組件Text。單行文本框組件用于單行文本的輸入及文本顯示,多行文本框組件用于多行文本輸入及文本顯示。以單行文本框組件Entry為例,其創(chuàng)建如下:entry=tkinter.Entry(master,parameter=values)其中master表示Entry組件的父容器。parameter為參數(shù),主要參數(shù)見表107,Entry組件的主要方法見表108。

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院2610.2.3文本框組件表107Entry組件的主要參數(shù)屬性功能說明width寬度show文本框顯示的字符,用于密碼輸入,如設(shè)置為”*”font文本框文字的字體及大小等fg文本框的前景色,即字體顏色bg文本框的背景色state可以設(shè)置為normal(正常輸入),disabled(禁止輸入),readonly(只讀),默認(rèn)為normal

表108Entry組件的主要方法方法功能說明get()獲取文本框中輸入的內(nèi)容insert(index,string)從index位置開始插入字符串stringdelete(first,last=None)刪除從first到last之間的字符串,不包含last,如果要?jiǎng)h掉全部,可以設(shè)置last為end

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院2710.2.3文本框組件【例10-7】Entry文本框使用案例,代碼及運(yùn)行效果如下所示:importtkinterimportsqlite3##插入學(xué)生信息defbtn1Click():lst=[]lst.append(entryNo.get())lst.append(entryName.get())lst.append(int(entryAge.get()))cur.execute("insertintoxs(學(xué)號(hào),姓名,年齡)values(?,?,?)",tuple(lst))mit()

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院2810.2.3文本框組件##清空entry輸入框內(nèi)容defbtn2Click():entryNo.delete(0,"end")entryName.delete(0,"end")entryAge.delete(0,"end")##連接學(xué)生管理數(shù)據(jù)庫con=sqlite3.connect("e:\\python教材編寫\\第10章案例\\xsgl.db")cur=con.cursor()##創(chuàng)建主窗口及各種組件root=tkinter.Tk()root.geometry("300x200")

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院2910.2.3文本框組件label=tkinter.Label(root,text="學(xué)生信息錄入",font=("宋體",16))label.place(x=80,y=10)labelNo=tkinter.Label(root,text="學(xué)號(hào)")labelNo.place(x=40,y=40)labelName=tkinter.Label(root,text="姓名")labelName.place(x=40,y=70)labelAge=tkinter.Label(root,text="年齡")labelAge.place(x=40,y=100)

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院3010.2.3文本框組件entryNo=tkinter.Entry(root)entryNo.place(x=90,y=40)entryName=tkinter.Entry(root)entryName.place(x=90,y=70)entryAge=tkinter.Entry(root)entryAge.place(x=90,y=100)btn1=tkinter.Button(root,text="確定",command=btn1Click,width=10)btn1.place(x=50,y=140)btn2=tkinter.Button(root,text="取消",command=btn2Click,width=10)btn2.place(x=160,y=140)root.mainloop()cur.close()con.close()

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院3110.2.4列表框組件列表框組件Listbox用于顯示多個(gè)項(xiàng)目,用戶可以選中一個(gè)或者選中多個(gè)項(xiàng)目。列表框的創(chuàng)建如下:listbox=tkinter.Listbox(master,parameter=values)其中master表示Listbox組件的父容器。parameter為參數(shù)。主要參數(shù)見表10-9,主要方法見表10-10。表109Listbox組件的主要參數(shù)屬性功能說明width寬度height設(shè)置列表框顯示的行數(shù),默認(rèn)值為10font列表框文字的字體及大小等fg按鈕的前景色,即字體顏色bg按鈕的背景色表1010Listbox組件的主要方法方法功能說明delete(first,last=None)刪除參數(shù)first到last(包含)的所有選項(xiàng)忽略last參數(shù),則刪除first參數(shù)指定的選項(xiàng)insert(index,*elements)添加一個(gè)或者多個(gè)項(xiàng)目到列表框中,如果在index為tkinter.END,則在末尾添加curselection()返回當(dāng)前選項(xiàng)的索引值get(first,last=None)返回一個(gè)元組,包含參數(shù)first到last范圍內(nèi)(包含first和last)的所有選項(xiàng)的文本;如果忽略last參數(shù),表示返回first參數(shù)指定選項(xiàng)的文本selection_set(first,last=None)設(shè)置參數(shù)first到last范圍內(nèi)(包含first和last)選項(xiàng)為選中狀態(tài);如果忽略last參數(shù),則只設(shè)置first參數(shù)指定選項(xiàng)為選中狀態(tài) size()返回列表框中所有選項(xiàng)的數(shù)量

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院3210.2.4列表框組件【例10-8】列表框使用案例,代碼及運(yùn)行效果如下:defbtnLeftButton():select=listboxRight.curselection()listboxLeft.insert(tkinter.END,listboxRight.get(select))listboxRight.delete(select)##單擊在"右移"按鈕,將選中的名字移到右邊defbtnRightButton():select=listboxLeft.curselection()listboxRight.insert(tkinter.END,listboxLeft.get(select))listboxLeft.delete(select)

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院3310.2.4列表框組件##建立主窗口root=tkinter.Tk()root.title="學(xué)生信息"label=tkinter.Label(text="學(xué)生信息")label.grid(row=0,column=0,columnspan=3)##建立左邊的列表框,并填入名字listboxLeft=tkinter.Listbox()foritemin["張九林","高師","賈禱","杜府","孟浩燃","宋之雯","王偉","白居懿","杜目","李動(dòng)"]:listboxLeft.insert(tkinter.END,item)listboxLeft.selection_set(0)listboxLeft.grid(row=1,column=0,rowspan=2)

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院3410.2.4列表框組件##創(chuàng)建"左移"和"右移"按鈕rightMoveButton=tkinter.Button(root,text="右移",command=btnRightButton)leftMoveButton=tkinter.Button(root,text="左移",command=btnLeftButton)rightMoveButton.grid(row=1,column=1,rowspan=2)leftMoveButton.grid(row=2,column=1,rowspan=2)##建立右邊的列表框listboxRight=tkinter.Listbox()listboxRight.grid(row=1,column=2,rowspan=2)root.mainloop()

MORETHENTEMPLATE浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院3510.2.5單選按鈕組件單選按鈕組件Radiobutton實(shí)現(xiàn)選項(xiàng)的單選功能,其創(chuàng)建如下:radioButton=tkinter.Radiobutton(master,parameter=values)其中master表示Radiobutton組件的父容器。parameter為參數(shù),主要參數(shù)見表10-11。表1011Radiobutton組件的主要參數(shù)屬性功能說明width寬度height高度font單選按鈕文字的字體及大小等fg前景色bg背景色text顯示的文本variable與Radiobutton組件關(guān)聯(lián)的變量,同一組中的所有按鈕的variable選項(xiàng)都指向同一個(gè)變量value每個(gè)選項(xiàng)按鈕對(duì)應(yīng)的值,通過該值可以判斷單擊哪個(gè)按鈕command指定該按鈕關(guān)聯(lián)的函數(shù)或者方法浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院3610.2.5單選按鈕組件【例10-9】radiobutton組件使用案例,代碼及運(yùn)行效果如下:importtkinterlst=["紅色","藍(lán)色","綠色"]color=["red","blue","green"]##單擊單選按鈕后設(shè)置背景色defradioColor():foriinrange(len(lst)):ifr.get()==i:cv["bg"]=color[i]root=tkinter.Tk()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院3710.2.5單選按鈕組件##創(chuàng)建畫布cv=tkinter.Canvas(root,width=200,height=200)cv.place(x=0,y=0)r=tkinter.IntVar()##設(shè)置默認(rèn)選中按鈕r.set(0)cv["bg"]=color[0]##創(chuàng)建單選按鈕foriinrange(len(lst)):radio=tkinter.Radiobutton(root,variable=r,value=i,text=lst[i],command=radioColor)radio.place(x=70,y=40+i*40)root.mainloop()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院3810.2.6復(fù)選框組件復(fù)選框組件CheckButton實(shí)現(xiàn)選項(xiàng)的多選功能。其創(chuàng)建如下:checkButton=tkinter.Checkbutton(master,parameter=values)其中master表示Checkbutton組件的父容器。parameter為參數(shù)。主要參數(shù)見表10-12。表10-12Checkbutton組件的主要參數(shù)屬性功能說明width寬度height高度font文字的字體及大小等fg前景色bg背景色text顯示的文本variable與Checkbutton組件關(guān)聯(lián)的變量,不同復(fù)選框?qū)?yīng)的變量不同onvalue復(fù)選框選中時(shí)變量的值offvalue復(fù)選框未選中時(shí)變量的值command指定復(fù)選框關(guān)聯(lián)的函數(shù)或者方法浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院3910.2.6復(fù)選框組件【例10-10】復(fù)選框組件使用案例,其代碼及運(yùn)行效果如下:importtkinterfromtkinterimportmessageboxasmsgboxroot=tkinter.Tk()lst=["紅色","藍(lán)色","綠色"]##單擊選項(xiàng)按鈕后顯示消息窗口defbtnButtonClick():txt="你喜歡的顏色是"ifr.get()==1:txt+="紅色"ifb.get()==1:txt+="藍(lán)色"ifg.get()==1:txt+="綠色"浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院4010.2.6復(fù)選框組件msgbox.showinfo("Info",txt)##創(chuàng)建labe組件label=tkinter.Label(root,text="你喜歡的顏色有哪些?")label.place(x=50,y=20)##設(shè)置復(fù)選框的默認(rèn)值為不選中r=tkinter.IntVar()r.set(2)b=tkinter.IntVar()b.set(2)g=tkinter.IntVar()g.set(2)浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院4110.2.6復(fù)選框組件##創(chuàng)建復(fù)選框checkRed=tkinter.Checkbutton(root,variable=r,onvalue=1,offvalue=2,text="紅色")checkRed.place(x=70,y=40)checkBlue=tkinter.Checkbutton(root,variable=b,onvalue=1,offvalue=2,text="藍(lán)色")checkBlue.place(x=70,y=80)checkGreen=tkinter.Checkbutton(root,variable=g,onvalue=1,offvalue=2,text="綠色")checkGreen.place(x=70,y=120)##創(chuàng)建按鈕button=tkinter.Button(root,text="確定",command=btnButtonClick)button.place(x=70,y=160)##root.mainloop()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院4210.2.7菜單組件菜單組件Menu可以創(chuàng)建頂級(jí)菜單、下拉菜單以及快捷菜單。菜單創(chuàng)建的基本方法如下:menu=tkinter.Menu(master,parameter=values)其中master表示menu組件的父容器,parameter為參數(shù),參數(shù)有bg、fg等參數(shù)。菜單組件的主要方法見表10-13。表1013Menu組件的主要方法方法功能說明add_command(parameters)添加一個(gè)普通的命令菜單,paramters可以為如下參數(shù):label-指定菜單項(xiàng)的文本;command-菜單命令函數(shù)add_cascade(parameters)添加一個(gè)下拉菜單,parameters可以為如下參數(shù):label-指定菜單文本;menu-指定下級(jí)菜單add_separator()添加分隔符此外,還有在菜單中添加復(fù)選框和單選按鈕等等方法。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院4310.2.7菜單組件【例10-11】頂級(jí)菜單的創(chuàng)建案例,代碼及運(yùn)行效果如下:importtkinterroot=tkinter.Tk()root.geometry("300x200")##創(chuàng)建主菜單mainMenu=tkinter.Menu(root)##單擊菜單后執(zhí)行的相應(yīng)操作defstudentInformatEnter():print("你單擊了學(xué)生信息管理")defstudentInformationEdit():print("你單擊了課程信息管理")浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院4410.2.7菜單組件mainMenu.add_command(label="學(xué)生信息管理",command=studentInformatEnter)mainMenu.add_command(label="課程信息管理",command=studentInformationEdit)##將主菜單顯示在窗口root["menu"]=mainMenuroot.mainloop()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院4510.2.7菜單組件【例10-12】下拉菜單的創(chuàng)建,代碼及運(yùn)行效果如下所示:importtkinterroot=tkinter.Tk()root.geometry("600x300")##創(chuàng)建主菜單mainMenu=tkinter.Menu(root)##單擊菜單后執(zhí)行的相應(yīng)操作defstudentInformatEnter():print("你單擊了學(xué)生信息錄入")defstudentInformationEdit():print("你單擊了學(xué)生信息編輯")defcourseInformationEnter():print("你單擊了課程信息錄入")浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院4610.2.7菜單組件defcourseInformationEdit():print("你單擊了課程信息編輯")fileMenu=tkinter.Menu(mainMenu)##創(chuàng)建子菜單fileMenu.add_command(label="學(xué)生信息錄入",command=studentInformatEnter)fileMenu.add_command(label="學(xué)生信息修改",command=studentInformationEdit)mainMenu.add_cascade(label="學(xué)生信息管理",menu=fileMenu)##設(shè)置為下拉菜單##課程信息管理菜單fileMenu=tkinter.Menu(mainMenu)fileMenu.add_command(label="課程信息錄入",command=courseInformationEnter)fileMenu.add_command(label="課程信息修改",command=courseInformationEdit)mainMenu.add_cascade(label="課程信息管理",menu=fileMenu)##將主菜單顯示在窗口root["menu"]=mainMenuroot.mainloop()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院4710.2.8消息窗口消息窗口messagebox用于彈出窗口,向用戶進(jìn)行告警,或者選擇下一步進(jìn)行的操作。消息窗口有如下窗口類型:info、warning、error、question、yesno、okcancel、retrycancel?!纠?0-13】消息窗口組件使用案例,代碼及運(yùn)行效果如下:importtkinterfromtkinterimportmessageboxasmsgboxlst=["Info","Error","Warning","Question","OkCancle","YesNo","Retry"]浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院4810.2.8消息窗口##單擊單選按鈕后彈出不同的窗口defradioClick():ifr.get()==0:msgbox.showinfo("Info","Info窗口")ifr.get()==1:msgbox.showerror("Error","Error窗口")ifr.get()==2:msgbox.showwarning("Waring","Waring窗口")ifr.get()==3:msgbox.askquestion("Question","Question窗口")ifr.get()==4:msgbox.askokcancel("OkCancel","OkCancel窗口")

浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院4910.2.8消息窗口ifr.get()==5:msgbox.askyesno("YesNo","YesNo窗口")ifr.get()==6:msgbox.askretrycancel("Retry","RetryCancel窗口")root=tkinter.Tk()r=tkinter.IntVar()##創(chuàng)建單選按鈕foriinrange(len(lst)):radio=tkinter.Radiobutton(root,variable=r,value=i,text=lst[i],command=radioClick)radio.place(x=70,y=10+i*25)radio.selection_clear()root.mainloop()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院5010.2.9Canvas組件Canvas組件可以在界面上繪制圖形、文本,創(chuàng)建圖形編輯器。Canvas組件的創(chuàng)建方法如下:canvas=tkinter.Canvas(master,parameter=values)其中master表示Canvas組件的父容器。parameter為參數(shù),主要參數(shù)見表1014,主要繪制圖形方法見表1015。表1014Canvas組件的主要參數(shù)屬性功能說明width寬度height高度bg背景色表10-14Canvas組件的主要參數(shù)浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院5110.2.9Canvas組件表1014Canvas組件的主要參數(shù)

表10-15Canvas組件的主要方法方法功能說明create_oval((x1,y1,x2,y2),paramters)繪制圓形或者橢圓形。第一個(gè)參數(shù)為包裹圓形或橢圓形的外面矩形的左上角坐標(biāo)和右下角坐標(biāo)。parameters有如下選項(xiàng):outline-指定邊框的顏色;width-指定邊框的寬度;fill-指定填充顏色create_rectangle((x1,y1,x2,y2),paramters)繪制矩形。第一個(gè)參數(shù)為矩形的左上角坐標(biāo)和右下角坐標(biāo)。parameters有如下選項(xiàng):outline-指定邊框的顏色;width-指定邊框的寬度;fill-指定填充顏色;dash-指定邊框?yàn)樘摼€create_text(x1,y1,paramters)繪制文字。x1和y1為文本的x坐標(biāo)和y坐標(biāo)。parameters有如下選項(xiàng):text-指定文本內(nèi)容;fill-指定文字顏色create_arc((x1,y1,x2,y2),paramters)繪制圓弧。第一個(gè)參數(shù)為包裹圓弧的矩形的左上角坐標(biāo)和右下角坐標(biāo)。parameters有如下選項(xiàng):outline-指定圓弧邊框的顏色;width-指定邊框的寬度;fill-指定填充顏色;start-指定起始角度;extent-指定偏移角度create_line(x1,y1,x2,y2,x3,y3...,paramters)x1,y1,x2,y2,x3,y3為線段的端點(diǎn)坐標(biāo)。parameters有如下選項(xiàng):width-指定線段的寬度;fill-指定線段顏色;arrow-指定是否有箭頭,沒有箭頭為none,起點(diǎn)有箭頭為first,終點(diǎn)有箭頭為last,兩端有箭頭為both;dash-指定是否虛線create_polygon(x1,y1,x2,y2,x3,y3...,paramters)x1,y1,x2,y2,x3,y3...為頂點(diǎn)坐標(biāo)。parameters有如下選項(xiàng):width-指定邊框的寬度;fill-指定填充顏色;outline-指定邊框的顏色;smooth-指定多邊形的平滑程度,0表示邊是折線,1表示邊是平滑曲線浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院5210.2.9Canvas組件【例1014】Canvas組件使用案例,代碼及運(yùn)行效果如下:importtkinterroot=tkinter.Tk()canvas=tkinter.Canvas(root)canvas.pack()##繪制左邊的pythoncanvas.create_oval((20,60,120,160),fill="yellow")canvas.create_rectangle((20,60,120,160),outline="black",dash=7)canvas.create_text(70,110,text="Python",fill="green")表1014Canvas組件的主要參數(shù)浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院5310.2.9Canvas組件##繪制右邊的python##canvas.create_arc((20,60,120,160),start=0,extent=180)canvas.create_arc((200,80,350,190),start=20,extent=140,fill="yellow")canvas.create_line(250,110,300,110,arrow="none")canvas.create_text(275,100,text="Python",fill="green")root.mainloop()表1014Canvas組件的主要參數(shù)圖1015運(yùn)行效果03Python事件處理事件就是程序所發(fā)生的事。事件包括事件序列、事件綁定和事件處理函數(shù)。例如下面的代碼實(shí)現(xiàn)了entry文本輸入框中敲回車時(shí),輸出文本框的內(nèi)容。defentryFunc1(event):print(entryUsername.get())entryUsername=tkinter.Entry(root,fg="green",width=35,font=("宋體",16))entryUsername.pack()entryUsername.bind("<Return>",entryFunc1)其中,”<Return>”為事件序列,entryFunc1為事件處理函數(shù),執(zhí)行輸出文本框內(nèi)容的操作。而組件的bind()方法將事件序列和事件處理函數(shù)綁定,也就是單擊回車后,能自動(dòng)調(diào)用entryFunc1函數(shù)。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院5510.3python事件處理事件序列是一個(gè)字符串,語法格式如下:<modifier-type-detail>,其中modifier為組合鍵,type為事件類型,如鍵盤事件、鼠標(biāo)事件或者窗體事件。detail為具體的鍵盤按鍵或者鼠標(biāo)按鈕。例如”<Ctrl-KeyPress-H>”表示按下Ctrl+H鍵,”<Button-1>”表示按下鼠標(biāo)左鍵。modifier組合鍵可以為如下組合鍵,見表1016。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院5610.3.1事件序列表1016Modifier組合鍵組合鍵說明Alt按下Alt按鍵Any按下任何類型的按鍵Control按下Control按鍵Double連續(xù)兩個(gè)事件被觸發(fā)的時(shí)候,例如<Double-Button-1>表示雙擊鼠標(biāo)左鍵Lock打開大寫字母鎖定鍵(CapsLock)Shift按下Shift按鍵Triple與Double類似,連續(xù)三個(gè)事件被觸發(fā)的時(shí)候type包含鍵盤事件、鼠標(biāo)事件和窗體事件,見表1017。表1017Type事件類型浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院5710.3.1事件序列事件類型說明KeyPress當(dāng)按下鍵盤按鍵時(shí)觸發(fā)該事件KeyRelease當(dāng)釋放鍵盤按鍵時(shí)觸發(fā)該事件Button當(dāng)單擊鼠標(biāo)按鈕時(shí)觸發(fā)該事件,detail知名具體哪個(gè)按鈕:<Button-1>表示鼠標(biāo)左鍵;<Button-2>表示鼠標(biāo)中鍵;<Button-3>表示鼠標(biāo)右鍵;<Button-4>表示滾輪上滾(Linux);<Button-5>表示滾輪下滾(Linux)ButtonRelease當(dāng)釋放鼠標(biāo)按鈕時(shí)觸發(fā)該事件Acitvate當(dāng)組件狀態(tài)從“未激活”變?yōu)椤凹せ睢钡臅r(shí)候觸發(fā)該事件Deactivate當(dāng)組件狀態(tài)從“激活”變?yōu)椤拔醇せ睢钡臅r(shí)候觸發(fā)該事件Configure當(dāng)組件尺寸發(fā)生改變的時(shí)候觸發(fā)該事件Destroy當(dāng)組件被銷毀時(shí)觸發(fā)該事件 Enter當(dāng)鼠標(biāo)指針進(jìn)入組件的時(shí)候觸發(fā)該事件Leave當(dāng)鼠標(biāo)指針離開組件的時(shí)候觸發(fā)該事件Expose當(dāng)窗口或組件的某部分不再被覆蓋的時(shí)候觸發(fā)該事件FocusIn當(dāng)組件獲得焦點(diǎn)時(shí)觸發(fā)該事件FocusOut當(dāng)組件失去焦點(diǎn)時(shí)觸發(fā)該事件Map當(dāng)組件被映射的時(shí)候觸發(fā)該事件Unmap當(dāng)組件被取消映射的時(shí)候觸發(fā)該事件Motion當(dāng)鼠標(biāo)在組件內(nèi)移動(dòng)的整個(gè)過程均觸發(fā)該事件MouseWheel當(dāng)鼠標(biāo)滾輪滾動(dòng)的時(shí)候觸發(fā)該事件,該事件僅支持windows和mac系統(tǒng)Visibility當(dāng)應(yīng)用程序至少有一部分在屏幕中可見的時(shí)候觸發(fā)該事件事件綁定有多種方法,可以在創(chuàng)建組件的時(shí)候綁定,也可以用組件的bind()方法,也就是實(shí)例綁定。另外還有類綁定、程序界面綁定及標(biāo)識(shí)綁定。下面主要介紹創(chuàng)建組件時(shí)綁定及實(shí)例綁定綁定。(1)創(chuàng)建組件時(shí)綁定創(chuàng)建組件實(shí)例時(shí),在參數(shù)中指定command為某個(gè)事件處理函數(shù),即進(jìn)行了綁定。例如下面代碼中,在創(chuàng)建按鈕的時(shí)候,用參數(shù)command指定了btnButtonClick()函數(shù),即進(jìn)行了綁定。defbtnButtonClick():print(“你單擊了確定按鈕!”)button=tkinter.Button(root,fg="green",text="確定",command=btnButtonClick)button.pack()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院5810.3.2事件序列綁定(2)實(shí)例綁定實(shí)例綁定用到組件的bind()方法,其語法格式如下:組件實(shí)例.bind(sequence,func)Sequence是事件序列,func為事件處理函數(shù)。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院5910.3.2事件序列綁定【例1015】實(shí)例綁定案例,代碼及運(yùn)行效果如下:importtkinter##定義事件處理函數(shù)defentryFunc1(event):print(entryUsername.get())defentryFunc2(event):print("enter")浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院6010.3.2事件序列綁定defentryFunc3(event):print("leave")defentryFunc4(event):print("focusin")##創(chuàng)建窗口對(duì)象root=tkinter.Tk()#創(chuàng)建單行文本框entryUsername=tkinter.Entry(root,fg="green",width=35,font=("宋體",16))entryUsername.pack()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院6110.3.2事件序列綁定##實(shí)例綁定entryUsername.bind("<Return>",entryFunc1)##單擊回車時(shí)輸出文本框的內(nèi)容entryUsername.bind("<Enter>",entryFunc2)##鼠標(biāo)移到文本框時(shí)輸出"enter"entryUsername.bind("<Leave>",entryFunc3)##鼠標(biāo)移出文本框時(shí)輸出"leave"entryUsername.bind("<FocusIn>",entryFunc4)##文本框得到焦點(diǎn)后輸出"focusin"root.mainloop()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院6210.3.2事件序列綁定當(dāng)在文本框中輸入123后敲回車后鼠標(biāo)移開文本框,這時(shí)輸出結(jié)果為:這時(shí)因?yàn)楫?dāng)要輸入123時(shí),首先鼠標(biāo)會(huì)移到文本框上,此時(shí)觸發(fā)Enter事件,自動(dòng)調(diào)用entryFunc2()函數(shù);然后單擊文本框,準(zhǔn)備輸入文字,此時(shí)焦點(diǎn)進(jìn)入文本框,會(huì)觸發(fā)FocusIn事件,此時(shí)自動(dòng)調(diào)用entryFunc4()函數(shù);接下來輸入123后敲回車,此時(shí)觸發(fā)鍵盤事件,自動(dòng)調(diào)用entryFun1()函數(shù);最后鼠標(biāo)移開文本框,則觸發(fā)Leave事件,自動(dòng)調(diào)用entryFunc3()函數(shù)。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院6310.3.2事件序列綁定事件處理函數(shù)用于定義事件響應(yīng)后執(zhí)行的操作。事件處理函數(shù)的定義如下:def事件處理函數(shù)名稱(event):具體的操作這里的參數(shù)event,可以獲取各種相關(guān)參數(shù),如鼠標(biāo)的相對(duì)坐標(biāo),按鍵的鍵碼值,事件類型等等信息,具體說明見表10-18。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院6410.3.3事件處理函數(shù)表1018event事件對(duì)象的主要參數(shù)屬性參數(shù)說明.x,.y鼠標(biāo)相對(duì)組件左上角的坐標(biāo).x_root,.y_root鼠標(biāo)相對(duì)屏幕左上角的坐標(biāo).keysym鍵盤按鍵的字符串命名,如Escape,F1,...F12,Right,Left,Down,Up,Home,Insert,Delete等.keysym_num鍵盤按鍵的數(shù)字代碼.keycode鍵碼.time時(shí)間.type事件類型.widget觸發(fā)事件的對(duì)應(yīng)組件.char字符【例1016】Event事件對(duì)象案例,代碼及運(yùn)行效果如下:importtkinter##定義事件處理函數(shù)defentryFunc1(event):print("相對(duì)組件左上角坐標(biāo)",event.x,event.y)print("相對(duì)屏幕左上角坐標(biāo)",event.x_root,event.y_root)defentryFunc2(event):print("按鍵的字符串命名:",event.keysym)print("按鍵的鍵碼:",event.keycode)浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院6510.3.3事件處理函數(shù)##創(chuàng)建窗口對(duì)象root=tkinter.Tk()#創(chuàng)建單行文本框entryUsername=tkinter.Entry(root,fg="green",width=35,font=("宋體",16))entryUsername.pack()##實(shí)例綁定entryUsername.bind("<Enter>",entryFunc1)entryUsername.bind("<KeyPress>",entryFunc2)root.mainloop()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院6610.3.3事件處理函數(shù)##創(chuàng)建窗口對(duì)象root=tkinter.Tk()#創(chuàng)建單行文本框entryUsername=tkinter.Entry(root,fg="green",width=35,font=("宋體",16))entryUsername.pack()##實(shí)例綁定entryUsername.bind("<Enter>",entryFunc1)entryUsername.bind("<KeyPress>",entryFunc2)root.mainloop()浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院6710.3.3事件處理函數(shù)運(yùn)行后將鼠標(biāo)移到文本框內(nèi),此時(shí)會(huì)輸出鼠標(biāo)相對(duì)于文本框及屏幕左上角的坐標(biāo)值,結(jié)果如下:浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院6810.3.3事件處理函數(shù)當(dāng)按下Insert鍵和Home鍵時(shí),會(huì)輸出如下結(jié)果:04學(xué)生成績(jī)處理實(shí)例

MORETHENTEMPLATE下面用tkinter庫實(shí)現(xiàn)學(xué)生成績(jī)處理案例,實(shí)現(xiàn)學(xué)生各門成績(jī)的最高分、最低分及平均分,實(shí)現(xiàn)學(xué)生總成績(jī)的排名。主界面及代碼如下所示。主界面中有主菜單及下拉菜單。學(xué)生信息管理包含學(xué)生信息錄入和學(xué)生信息修改,課程信息管理包含課程信息錄入和課程信息修改,成績(jī)管理包含成績(jī)錄入和成績(jī)信息修改。統(tǒng)計(jì)包含統(tǒng)計(jì)分值及排名。學(xué)生信息錄入和學(xué)生信息修改、課程信息錄入和課程信息修改、成績(jī)錄入和成績(jī)信息修改這些功能,讀者可以自行增加。浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院7010.4學(xué)生成績(jī)處理實(shí)例浙江財(cái)經(jīng)大學(xué)東方學(xué)院信息分院7110.4學(xué)生成績(jī)處理實(shí)例圖1017主界面

圖1017主界面

圖1019課程統(tǒng)計(jì)界面

圖1020排名情況10.4學(xué)生成績(jī)處理實(shí)例代碼如下:importtkinterfromtkinterimportttkimportsqlite3##計(jì)算總分并排名defrank():top1=tkinter.Toplevel(root)label=tkinter.Label(top1,text="總分排名情況",font=("宋體",16))label.pack()dataTreeview=ttk.Treeview(top1,show="headings",column=("學(xué)號(hào)","姓名","總分","名次"))dataTreeview.column("學(xué)號(hào)",width=100,anchor="center")dataTreeview.column("姓名",width=100,anchor="center")dataTreeview.column("總分",width=100,anchor="center")10.4學(xué)生成績(jī)處理實(shí)例dataTreeview.column("名次",width=100,anchor="center")dataTreeview.heading("學(xué)號(hào)",text="學(xué)號(hào)")dataTreeview.heading("姓名",text="姓名")dataTreeview.heading("總分",text="總分")dataTreeview.heading("名次",text="名次")dataTreeview.pack()cur.execute("selectxs.學(xué)號(hào),姓名,sum(成績(jī))fromxs,kc,cjwherexs.學(xué)號(hào)=cj.學(xué)號(hào)andkc.課程號(hào)=cj.課程號(hào)groupbyxs.學(xué)號(hào)")lst=cur.fetchall()lst.sort(key=lambdax:x[2],reverse=True)i=0rank=1

10.4學(xué)生成績(jī)處理實(shí)例foriteminlst:item+=(rank,)dataTreeview.insert("",i,values=item)i=i+1rank+=1top1.mainloop()10.4學(xué)生成績(jī)處理實(shí)例##統(tǒng)計(jì)最高分、最低分及平均分defcalcu():top2=tkinter.Toplevel(root)top2.geometry("500x150")labelMax=tkinter.Label(top2,text="課程統(tǒng)計(jì)情況",font=("微軟雅黑",16))labelMax.grid(row=0,column=0,columnspan=4)##界面labelMax=tkinter.Label(top2,text="最高分")labelMax.grid(row=2,column=0)labelMin=tkinter.Label(top2,text="最低分")labelMin.grid(row=3,column=0)labelAvg=tkinter.Label(top2,text="平均分")labelAvg.grid(row=4,column=0)10.4學(xué)生成績(jī)處理實(shí)例labelkc1=tkinter.Label(top2,text="數(shù)據(jù)結(jié)構(gòu)")labelkc1.grid(row=1,column=1)labelkc2=tkinter.Label(top2,text="操作系統(tǒng)")labelkc2.grid(row=1,column=2)labe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論