![Python程序設(shè)計(jì)基礎(chǔ)課件第6章_第1頁](http://file4.renrendoc.com/view/fb1bf47ef75d19cdc8d556c5baf85836/fb1bf47ef75d19cdc8d556c5baf858361.gif)
![Python程序設(shè)計(jì)基礎(chǔ)課件第6章_第2頁](http://file4.renrendoc.com/view/fb1bf47ef75d19cdc8d556c5baf85836/fb1bf47ef75d19cdc8d556c5baf858362.gif)
![Python程序設(shè)計(jì)基礎(chǔ)課件第6章_第3頁](http://file4.renrendoc.com/view/fb1bf47ef75d19cdc8d556c5baf85836/fb1bf47ef75d19cdc8d556c5baf858363.gif)
![Python程序設(shè)計(jì)基礎(chǔ)課件第6章_第4頁](http://file4.renrendoc.com/view/fb1bf47ef75d19cdc8d556c5baf85836/fb1bf47ef75d19cdc8d556c5baf858364.gif)
![Python程序設(shè)計(jì)基礎(chǔ)課件第6章_第5頁](http://file4.renrendoc.com/view/fb1bf47ef75d19cdc8d556c5baf85836/fb1bf47ef75d19cdc8d556c5baf858365.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第6章圖形界面設(shè)計(jì)第6章圖形界面設(shè)計(jì)導(dǎo)學(xué)內(nèi)容與要求了解: 1. Python的圖形開發(fā)庫 2. 窗口內(nèi)圖形繪制( canvas畫布組件、繪制簡單圖形對象)掌握: 1. Tkinter常用組件(標(biāo)簽、按鈕、文本框、列表框、單選按鈕 和復(fù)選框、消息窗口、對話框、菜單) 2. Python事件處理導(dǎo)學(xué)內(nèi)容與要求了解:6.1 Python 圖形開發(fā)庫6.1.1 開發(fā)平臺 表6-1 支持Python的常用GUI庫GUI庫描述網(wǎng)站Tkinter跨平臺,方便穩(wěn)定,可移植性好 /moin/Tkinterwxpython基于wxWindows,跨平臺越來越流行PythonWin只能在Windows上使用。使用了
2、本機(jī)的WindowsGUI功能/crew/mhammondJavaSwing只能用于Jython,使用本機(jī)的JavaGUI/docs/books/tutorial/uiswingPyGTK使用GTK平臺,在Linux上很流行PyQt使用Qt平臺,跨平臺/moin/PyQt平臺是圖形組件的一個(gè)特定集合,在編寫Python前,首先要確定使用哪個(gè)GUI平臺。比較流行的GUI開發(fā)庫如表6-1所示。Tkinter 是內(nèi)置到 Python 的安裝包,只要安裝好 Python就能導(dǎo)入Tkinter庫。 Python3.x 版本使用的庫名為 tkinter,即首字母 小寫。導(dǎo)入模塊時(shí),需要寫成:import
3、tkinter6.1 Python 圖形開發(fā)庫6.1.1 開發(fā)平臺 表6-6.1 Python 圖形開發(fā)庫6.1.2 創(chuàng)建Windows窗口 【例題6-1】創(chuàng)建第一個(gè)Windows窗口的GUI程序。運(yùn)行結(jié)果如圖所示:Tk()方法是創(chuàng)建一個(gè)普通的窗口,在創(chuàng)建組件前必須創(chuàng)建這個(gè)根窗口,然后在根窗口基礎(chǔ)上創(chuàng)建其他組件。mainloop()函數(shù)主要是用來顯示窗口。程序源文件見6-16.1 Python 圖形開發(fā)庫6.1.2 創(chuàng)建Window6.2 Tkinter常用組件6.2.1 Tkinter組件 組件是對數(shù)據(jù)和方法的簡單封裝,組件可以有自己的屬性和方法。Tkinter提供的組件有標(biāo)簽、按鈕和文本框
4、等,組件有時(shí)也稱為控件或部件??丶枋鯞utton按鈕控件,在程序中顯示按鈕Canvas畫布控件,顯示圖形元素如線條或文本Checkbutton多選框控件,用于在程序中提供多項(xiàng)選擇框Entry輸入控件,用于顯示簡單的文本內(nèi)容Frame框架控件,在屏幕上顯示一個(gè)矩形區(qū)域,多用來作為容器Label標(biāo)簽控件,可以顯示文本和位圖Listbox列表框控件,在Listbox窗口小部件是用來顯示一個(gè)字符串列表給用戶Menubutton菜單按鈕控件,由于顯示菜單項(xiàng)Menu菜單控件,顯示菜單欄,下拉菜單和彈出菜單Message消息控件,用來顯示多行文本,與label比較類似Radiobutton單選按鈕控件,顯
5、示一個(gè)單選的按鈕狀態(tài)Scale范圍控件,顯示一個(gè)數(shù)值刻度,為輸出限定范圍的數(shù)字區(qū)間Scrollbar滾動(dòng)條控件,當(dāng)內(nèi)容超過可視化區(qū)域時(shí)使用,如列表框.Text文本控件,用于顯示多行文本Toplevel容器控件,用來提供一個(gè)單獨(dú)的對話框,和Frame比較類似LabelFramelabelframe 是一個(gè)簡單的容器控件,常用與復(fù)雜的窗口布局MessageBox用于顯示應(yīng)用程序的消息框表6-2 常用的Tkinter組件6.2 Tkinter常用組件6.2.1 Tkinter組件6.2 Tkinter常用組件6.2.1 Tkinter組件 Tkinter的所有組件都具備標(biāo)準(zhǔn)屬性(即共有屬性),如字體
6、、大小和顏色等。常用的組件的標(biāo)準(zhǔn)屬性如表6-3所示。表6-3 常用組件的標(biāo)準(zhǔn)屬性屬性描述dimension組件大小color組件顏色font組件字體anchor錨點(diǎn),內(nèi)容放置的位置relief組件樣式bitmap位圖cursor光標(biāo)text顯示文本內(nèi)容state設(shè)置組件狀態(tài),正常、激活、禁用anchor屬性是指內(nèi)容??康奈恢?,具體對應(yīng)東南西北以及四個(gè)角。anchor可用值有以下幾個(gè):e,w,n,s,ne,se,sw,nw,center6.2 Tkinter常用組件6.2.1 Tkinter組件6.2 Tkinter常用組件6.2.1 Tkinter組件 Tkinter組件有特定的幾何布局管理器
7、(Geometry Manager),幾何布局管理器主要作用就是管理和組織父組件(一般為窗口)中的子組件的布局方式。Tkinter提供了3種不同的幾何布局管理器:pack、grid和place。 1. packpack幾何布局管理采用塊的方式組織組件。調(diào)用子組件的方法:若不指定pack()函數(shù)的參數(shù),pack會(huì)從上到下的放置組件。pack(option=value,)選項(xiàng)描述取值side停靠在父組件哪一邊top、buttom、left、rightanchorr??课恢?,對應(yīng)于東南西北及四角n、s、e、w、nw、sw、se、ne、center(默認(rèn)值)fill填充空間x、y、both、nonee
8、xpand擴(kuò)展空間0或1ipadx,ipady組件內(nèi)部在x/y方向上填充的空間大小單位為c(厘米)、m(毫米)、i(英寸)、p(打印機(jī)的點(diǎn))padx,pady組件外部在x/y方向上填充的空間大小單位為c(厘米)、m(毫米)、i(英寸)、p(打印機(jī)的點(diǎn))表6-4 pack()方法提供的參數(shù)選項(xiàng)6.2 Tkinter常用組件6.2.1 Tkinter組件6.2 Tkinter常用組件6.2.1 Tkinter組件 2. gridgrid幾何布局管理采用表格結(jié)構(gòu)組織組件。調(diào)用子組件的方法:子組件的位置由行和列確定的單元格決定,可跨多行多列。grid(option=value,)表6-5 grid()
9、方法提供的參數(shù)選項(xiàng)選項(xiàng)描述取值sticky對齊方式n、s、e、w、nw、sw、se、ne、centerrow單元格行號整數(shù),從0開始算起column單元格列號整數(shù),從0開始算起rowspan單元格橫跨的行數(shù)整數(shù),rowspan=3即跨三行columnspan單元格橫跨的列數(shù)整數(shù),columnspan=2即跨兩列ipadx,ipady設(shè)置組件里面x/y方向空白區(qū)域大小單位為c(厘米)、m(毫米)、i(英寸)、p(打印機(jī)的點(diǎn))padx,pady設(shè)置組件周圍x/y方向空白區(qū)域保留大小單位為c(厘米)、m(毫米)、i(英寸)、p(打印機(jī)的點(diǎn))6.2 Tkinter常用組件6.2.1 Tkinter組件
10、6.2 Tkinter常用組件6.2.1 Tkinter組件 3. placeplace幾何布局管理允許指定組件的大小與位置。調(diào)用子組件的方法:place的優(yōu)點(diǎn)是可以精確控制組件的位置,不足之處是改變窗口大小時(shí),子組件不能隨之靈活改變大小。place(option=value,)表6-6 place()方法提供的參數(shù)選項(xiàng)選項(xiàng)描述取值anchor對齊方式n、s、e、w、nw、sw、se、ne、center(默認(rèn)值)x,y定義本組件左上角在父組件中的絕對位置坐標(biāo),父組件的左上角坐標(biāo)為(0,0)。單位:像素從0開始的整數(shù)relx,rely定義本組件左上角位于在父組件中的相對位置比例。例如relx=0
11、.5表示從父組件x方向上1/2開始布局。取值范圍01.0height,width高度和寬度,單位為像素實(shí)數(shù)6.2 Tkinter常用組件6.2.1 Tkinter組件6.2 Tkinter常用組件6.2.2 標(biāo)簽 標(biāo)簽(Label)用于在窗口中顯示文本或者位圖信息。在Tkinter創(chuàng)建好的窗口中創(chuàng)建組件時(shí),需要調(diào)用指定組件的構(gòu)造函數(shù),創(chuàng)建標(biāo)簽組件的格式如下:表6-7 Label組件常用屬性屬性說明anchor對齊方式,對應(yīng)于東南西北以及四個(gè)角n、s、e、w、nw、sw、se、ne、center(默認(rèn)值)width寬度height高度compound指定文本與圖像如何在Label上顯示,默認(rèn)為n
12、one。當(dāng)指定image/bitmap時(shí),文本將被覆蓋,只顯示圖像。可用值有:left、right、top、bottom、centerwraplength指定多少單位后開始換行,用于顯示多行文本justify指定多行的對齊方式,可以使用的值為LEFT或RIGHTimage和bm顯示自定義圖片如.png,.gifbitmap顯示內(nèi)置的位圖Label(窗口對象, Label屬性)6.2 Tkinter常用組件6.2.2 標(biāo)簽 標(biāo)簽(Lab6.2 Tkinter常用組件6.2.2 標(biāo)簽 【例題6-2】標(biāo)簽組件的應(yīng)用。窗口標(biāo)題為“測試label組件”,在窗口中建立三個(gè)標(biāo)簽組件:lab1顯示文本“智能醫(yī)
13、學(xué)專委會(huì)”;lab2顯示系統(tǒng)內(nèi)置位圖“hourglass”;lab3顯示自選圖片“智能醫(yī)學(xué)專委會(huì).png”。程序代碼如下:#將tkinter模塊所有的類、函數(shù)等導(dǎo)入到當(dāng)前程序中from tkinter import *win = Tk() #創(chuàng)建一個(gè)窗口win.title(測試label組件) #給窗口命名#創(chuàng)建第一個(gè)標(biāo)簽lab1,標(biāo)簽顯示文本“智能醫(yī)學(xué)專委會(huì)”labl=Label(win,text = 智能醫(yī)學(xué)專委會(huì)) labl.pack(anchor = nw) #顯示標(biāo)簽組件 lab2=Label(win,bitmap =hourglass ) #創(chuàng)建第二個(gè)標(biāo)簽lab2 lab2.pac
14、k()bm = PhotoImage(file = rE:python練習(xí)智能醫(yī)學(xué)專委會(huì).png)lab3 = Label(win,image=bm) #創(chuàng)建第三個(gè)標(biāo)簽lab3lab3.pack()win.mainloop() #進(jìn)入消息循環(huán),顯示窗口程序源文件見6-26.2 Tkinter常用組件6.2.2 標(biāo)簽 【例題6-26.2 Tkinter常用組件6.2.3 按鈕 按鈕(Button)用于實(shí)現(xiàn)各種按鈕。按鈕上可以顯示文本和圖像,也可以通過command屬性將Python函數(shù)或方法關(guān)聯(lián)到按鈕上。創(chuàng)建按鈕組件的格式如下:表6-8 Button組件常用屬性Button對象=Button(窗
15、口對象, Button屬性)屬性說明anchor設(shè)置Button文本在控件上的對齊方式,對應(yīng)于東南西北以及四個(gè)角n、s、e、w、nw、sw、se、ne、center(默認(rèn)值)width設(shè)置顯示寬度,如未設(shè)置此項(xiàng),其大小適應(yīng)內(nèi)容標(biāo)簽height設(shè)置顯示高度,如未設(shè)置此項(xiàng),其大小適應(yīng)內(nèi)容標(biāo)簽compound指定文本與圖像的位置關(guān)系text顯示文本內(nèi)容bg設(shè)置背景顏色fg設(shè)置前景色bitmap指定位圖command指定Button的事件處理函數(shù)focus_set設(shè)置當(dāng)前組件得到焦點(diǎn)master代表父窗口relief指定外觀裝飾邊界附近的標(biāo)簽,可設(shè)置參數(shù):FLAT、GROOVE、RAISED、RIDG
16、E、SOLID、SUNKENstate組件狀態(tài):正常(normal)、激活(active)、禁用(disabled)bd設(shè)置按鈕的邊框大小,bd(bordwidth)默認(rèn)為1或者2個(gè)像素6.2 Tkinter常用組件6.2.3 按鈕 按鈕(But6.2 Tkinter常用組件6.2.3 按鈕 【例題6-3】創(chuàng)建一個(gè)含有四個(gè)按鈕的程序,每個(gè)按鈕的屬性設(shè)置如圖6-4所示,當(dāng)點(diǎn)擊最后一個(gè)按鈕時(shí)可以調(diào)出新的對話框。程序運(yùn)行效果如下:程序源文件見6-3.6.2 Tkinter常用組件6.2.3 按鈕 【例題6-36.2 Tkinter常用組件6.2.4 文本框 文本框組件分為單行文本框(Entry)和多
17、行文本框(Text)。單行文本框(Entry)主要用于輸入單行內(nèi)容和顯示文本,可以方便地向程序傳遞用戶參數(shù)。創(chuàng)建Entry對象的基本方法如下:Entry對象= Entry(窗口對象,Entry屬性)如果想獲取單行文本框內(nèi)輸入內(nèi)容,需要用get()方法,格式如下: Entry對象.get()屬性說明show如果設(shè)置為字符“*”,則輸入文本框內(nèi)顯示為“*”,用于密碼輸入insertbackgroud插入光標(biāo)的顏色,默認(rèn)為黑色selectbackground選中文本的背景色selectforeground選中文本的前景色width組件的寬度(所占字符數(shù))bg設(shè)置背景顏色fg設(shè)置前景色state組件狀
18、態(tài):正常(normal)、激活(active)、禁用(disabled)表6-9 Entry組件常用屬性6.2 Tkinter常用組件6.2.4 文本框 文本框組件6.2 Tkinter常用組件6.2.4 文本框 【例題6-4】創(chuàng)建一個(gè)醫(yī)生診療系統(tǒng)界面,效果如圖6-6所示。密碼文本框中顯示“*”。窗口尺寸設(shè)置為250*150。程序代碼以及運(yùn)行效果如下:程序源文件見6-4from tkinter import *root= Tk()root.title(醫(yī)生診療系統(tǒng)) #設(shè)置窗口名稱root.geometry(250 x150) #設(shè)置窗口顯示尺寸Label(root,text=用戶名,widt
19、h=6).place(x=5,y=10) #創(chuàng)建“用戶名”標(biāo)簽Entry(root,width=20).place(x=55,y=10) #創(chuàng)建用戶名標(biāo)簽后文本框Label(root,text=密碼,width=6).place(x=5,y=45) #創(chuàng)建“密碼”標(biāo)簽Entry(root,width=20,show=*).place(x=55,y=45) #創(chuàng)建密碼標(biāo)簽后文本框Button(root,text=登錄,width=8).place(x=35,y=75) #創(chuàng)建“登錄”按鈕Button(root,text=取消,width=8).place(x=120,y=75)#創(chuàng)建“取消”按鈕
20、root.mainloop() 6.2 Tkinter常用組件6.2.4 文本框 【例題6-6.2 Tkinter常用組件6.2.5 列表框 列表框組件用于顯示多個(gè)項(xiàng)目,并且允許用戶選擇一個(gè)或多個(gè)項(xiàng)目。列表框組件常用的方法如表6-10所示。表6-10 Listbox組件常用操作常用操作說明Listbox對象=Listbox(窗口對象)創(chuàng)建Listbox對象Listbox對象.pack()顯示Listbox對象Listbox對象.insert(index,item)插入文本項(xiàng),index是插入文本項(xiàng)的位置,在尾部插入用end,在選中處插入則是active。item是要插入的項(xiàng)。Listbox對象
21、.curselection ()返回選中索引,結(jié)果為元組。索引號從0開始。Listbox對象.delete(first,last)刪除文本項(xiàng),刪除指定(first,last)范圍的項(xiàng),不指定last則刪除1個(gè)項(xiàng)目Listbox對象.get(first,last)獲取項(xiàng)目內(nèi)容,獲取指定(first,last)范圍的項(xiàng),不指定last則返回1個(gè)項(xiàng)目Listbox對象.size()獲取項(xiàng)目個(gè)數(shù)m=StringVarLisbox對象=listbbox(root,listvariable=m)獲取Listbox內(nèi)容,需要使用屬性listvariable為Listbox對象指定一個(gè)對應(yīng)的變量,如左側(cè)m。m
22、.get()方法以獲得listbox對象中的內(nèi)容6.2 Tkinter常用組件6.2.5 列表框 列表框組件6.2 Tkinter常用組件6.2.5 列表框 【例題6-5】創(chuàng)建如下列表框,通過選中左側(cè)列表框中的值,點(diǎn)擊“添加”按鈕可以添加到右側(cè)選定字段列表框中。也可以選中右側(cè)列表框中的值點(diǎn)擊“刪除”按鈕進(jìn)行刪除。程序運(yùn)行效果如下:程序源文件見6-56.2 Tkinter常用組件6.2.5 列表框 【例題6-6.2 Tkinter常用組件6.2.6 單選按鈕和復(fù)選框 單選按鈕(Radiobutton)和復(fù)選框(Checkbutton)分別用于實(shí)現(xiàn)選項(xiàng)的單選和復(fù)選功能。單選按鈕用于同一組單選按鈕中
23、選擇一個(gè)單選按鈕(不能同時(shí)選定多個(gè))。復(fù)選框用于選擇一項(xiàng)或多項(xiàng)。1.創(chuàng)建單選按鈕對象Radiobutton對象= Radiobutton(窗口對象, Radiobutton組件屬性)2.Radiobutton組件的常用屬性 (1)variable:單選按鈕索引變量,通過變量的值確定哪個(gè)單選按鈕被選中。 一組單選按鈕使用同一個(gè)索引變量。(2)value:單選按鈕選中時(shí)變量的值。(3)command:單選按鈕選中時(shí)執(zhí)行的命令(函數(shù))。3.Radiobutton組件的方法(1)deselect():取消選擇(2)select():選擇(3)invoke():調(diào)用單選按鈕指定的回調(diào)函數(shù)6.2 Tkin
24、ter常用組件6.2.6 單選按鈕和復(fù)選框 6.2 Tkinter常用組件6.2.6 單選按鈕和復(fù)選框 4.創(chuàng)建Checkbutton對象的基本方法如下:Checkbutton對象=Checkbutton(窗口對象,text=Checkbutton組件顯示的文本,command=單擊Checkbutton按鈕所調(diào)用的回調(diào)函數(shù))5. CheckButton組件的常用屬性(1)variable:復(fù)選框索引變量,通過變量的值確定哪些復(fù)選框被選中。每個(gè)復(fù)選框使用不同的變量,使復(fù)選框之間相互獨(dú)立。(2)onvalue:復(fù)選框選中時(shí)變量的值。(3)offvalue:復(fù)選框未選中變量的值。(4)comman
25、d:復(fù)選框選中時(shí)執(zhí)行的命令(函數(shù))。6.獲取Checkbutton的狀態(tài) 為了獲取Checkbutton組件是否被選中,需要使用variable屬性為Checkbutton組件指定一個(gè)對應(yīng)變量。通過該變量的值來判斷當(dāng)前選中的是Checkbutton組件中的哪個(gè)選項(xiàng)。該變量初始化時(shí)可以通過set()函數(shù)設(shè)置初始值。6.2 Tkinter常用組件6.2.6 單選按鈕和復(fù)選框 6.2 Tkinter常用組件6.2.6 單選按鈕和復(fù)選框 【例題6-6】創(chuàng)建一個(gè)簡單的Radiobutton例子,使用單選按鈕組件選擇不同的課程。程序代碼及運(yùn)行效果如下:程序源文件見6-6from tkinter impor
26、t *root = Tk()Label(root,text=課程名稱).place(x=0,y=0) #創(chuàng)建標(biāo)簽組件 #創(chuàng)建StringVar對象,記錄單選按鈕值r= StringVar() #創(chuàng)建字符變量與variable綁定r.set(2) #設(shè)置變量初始值為2 radio1=Radiobutton(root,variable=r,value=1,text=大學(xué)計(jì)算機(jī)基礎(chǔ))#在坐標(biāo)(x=1,y=20)處顯示第一個(gè)單選按鈕radio1.place(x=1,y=20) radio2=Radiobutton(root,variable=r,value=2,text=醫(yī)學(xué)大數(shù)據(jù)應(yīng)用概論)radio
27、2.place(x=1,y=40)radio3=Radiobutton(root,variable=r,value=3,text=虛擬現(xiàn)實(shí)與增強(qiáng)現(xiàn)實(shí)技術(shù)導(dǎo)論)radio3.place(x=1,y=60)root.mainloop()6.2 Tkinter常用組件6.2.6 單選按鈕和復(fù)選框 6.2 Tkinter常用組件6.2.6 單選按鈕和復(fù)選框 【例題6-7】單選按鈕和復(fù)選框的綜合應(yīng)用。程序運(yùn)行效果如下:程序源文件見6-76.2 Tkinter常用組件6.2.6 單選按鈕和復(fù)選框 6.2 Tkinter常用組件6.2.7 消息窗口 消息窗口(messagebox)用于彈出提示框向用戶進(jìn)行警
28、告,或讓用戶選擇下一步如何操作,消息框包括很多類型,常用的有info、warning、error、yesno、okcancel等,包含不同的圖標(biāo)、按鈕以及彈出提示音?!纠}6-8】設(shè)計(jì)如下消息窗口界面,點(diǎn)擊“VR是什么”按鈕是彈出”VR是虛擬現(xiàn)實(shí)”消息窗口。點(diǎn)擊“AR是什么”按鈕是彈出”AR是增強(qiáng)現(xiàn)實(shí)”的消息窗口。程序運(yùn)行效果如下:程序源文件見6-86.2 Tkinter常用組件6.2.7 消息窗口 消息窗口6.2 Tkinter常用組件6.2.8 對話框 對話框用于與用戶交互和檢索信息。Tkinter模塊中的子模塊messagebox、filedialog、colorchooser、simp
29、leDialog包括一些通用的預(yù)定義對話框;用戶也可通過繼承TopLevel創(chuàng)建自定義對話框。模塊tkinter的子模塊filedialog包含用于打開文件對話框的函數(shù)askopenfilename()。格式如下:其中:(1)filetypes:文件過濾器,可以篩選某種格式的文件。 (2)title:設(shè)置打開文件對話框的標(biāo)題。文件保存對話框函數(shù)asksaveasfilename()。格式如下:其中:(1)initialdir:默認(rèn)保存路徑。(2)initialfile:默認(rèn)保存的文件名。askopenfilename(title=標(biāo)題,filetypes=(所有文件,.*),(文本文件,.tx
30、t)asksaveasfilename(title=標(biāo)題,initialdir=e:python練習(xí),initialfile=hello.py)6.2 Tkinter常用組件6.2.8 對話框 對話框用于6.2 Tkinter常用組件6.2.8 對話框 【例題6-9】文件對話框的打開和關(guān)閉的應(yīng)用。程序運(yùn)行效果如下:程序源文件見6-96.2 Tkinter常用組件6.2.8 對話框 【例題6-6.2 Tkinter常用組件6.2.9 菜單 菜單(Menu)是圖形用戶界面經(jīng)常用到的組件,菜單包含各種按照主題分組的基本命令,以圖標(biāo)和文字的方式展示可用選項(xiàng)。圖形用戶界面應(yīng)用程序包括兩種類型的菜單。(1
31、)主菜單:提供窗體的菜單系統(tǒng),通過單擊可以列出下拉菜單。(2)上下文菜單(也稱為快捷菜單):上下文菜單是一種根據(jù)用戶當(dāng)前所在程序位置(上下文)動(dòng)態(tài)生成的菜單。一般通過右擊某個(gè)對象彈出菜單,一般為與該對象相關(guān)的常用菜單命令。如復(fù)制、剪切等操作。創(chuàng)建菜單對象的基本方法如下: Menu對象= Menu(Windows窗口對象)將Menu對象顯示在窗口中的方法如下:Windows窗口對象menu=Menu對象Windows窗口對象.mainloop()6.2 Tkinter常用組件6.2.9 菜單 菜單(Men6.2 Tkinter常用組件6.2.9 菜單 創(chuàng)建一個(gè)頂級菜單,需要先創(chuàng)建一個(gè)菜單實(shí)例,然
32、后將菜單項(xiàng)添加進(jìn)去,添加的方法可以使用add_command()方法。add_command添加菜單項(xiàng),如果要添加的菜單是頂級菜單,則添加的菜單項(xiàng)依次向右添加。格式如下:其中該方法有以下幾個(gè)屬性:(1)label指定菜單的名稱(2)command指的是調(diào)用的方法(3)acceletor是快捷鍵,(4)underline是指該菜單項(xiàng)是否擁有下劃線Menu對象=add_command(lable=菜單項(xiàng)名稱,command=菜單項(xiàng)調(diào)用的方法名,)6.2 Tkinter常用組件6.2.9 菜單 創(chuàng)建一個(gè)頂級6.2 Tkinter常用組件6.2.9 菜單 創(chuàng)建一個(gè)下拉菜單的方法與創(chuàng)建主菜單方法類似,最
33、主要的區(qū)別就是下拉菜單需要添加到主菜單中,而主菜單需要添加到窗口中。如果該菜單項(xiàng)下有子菜單,添加下拉菜單的方法是add_cascade()。可以將一個(gè)菜單對象作為另一個(gè)菜單對象的下拉菜單。方法如下:Menu對象1.add_cascade(label=菜單文件,menu=Menu對象2)在創(chuàng)建Menu對象2時(shí)也要指定它是Menu對象1的子菜單。方法如下:Menu對象2=Menu(Menu對象1)6.2 Tkinter常用組件6.2.9 菜單 創(chuàng)建一個(gè)下拉6.2 Tkinter常用組件6.2.9菜單 【例題6-10】創(chuàng)建主菜單,主菜單中有“查詢”和“退出”兩個(gè)菜單項(xiàng)。當(dāng)點(diǎn)擊“查詢”時(shí)彈出下拉菜單“
34、住院號查詢”和“科室查詢”,當(dāng)點(diǎn)擊“退出”時(shí),退出并關(guān)閉當(dāng)前窗口。程序運(yùn)行效果如下:程序源文件見6-106.2 Tkinter常用組件6.2.9菜單 【例題6-106.3 窗口內(nèi)圖形繪制6.3.1 Canvas畫布組件 Canvas(畫布)為Tkinter提供了繪圖功能,其提供的圖形組件包括線形、圓形、圖片以及其他控件。創(chuàng)建一個(gè)Canvas對象的方法如下:Canvas對象=Canvas(窗口對象,選項(xiàng),)Canvas畫布常用屬性選項(xiàng)如下表所示:選項(xiàng)說明master代表了父窗口bg背景色,如bg=”red”,bg=#FF56EFfg前景色,如fg=”red”,fg=#FF56EFheight設(shè)置
35、顯示高度、如果未設(shè)置此項(xiàng),其大小以適應(yīng)內(nèi)容標(biāo)簽relief指定外觀裝飾邊界附近的標(biāo)簽,默認(rèn)是平的,可以設(shè)置的參數(shù):flat、groove、raised、ridge、solid、sunkenwidth設(shè)置顯示寬度,如果未設(shè)置此項(xiàng),其大小以適應(yīng)內(nèi)容標(biāo)簽state設(shè)置組件狀態(tài);正常(normal),激活(active),禁用(disabled)bd設(shè)置Button的邊框大小;bd(bordwidth)缺省為1或2個(gè)像素表6-11 Canvas畫布常用屬性6.3 窗口內(nèi)圖形繪制6.3.1 Canvas畫布組件 Ca6.3 窗口內(nèi)圖形繪制6.3.2 繪制圖形對象 Canvas畫布上可以繪制圖形對象如圓弧
36、、線條、矩形、多邊形、橢圓、文字以及位圖和圖像。Canvas畫布上繪制各種圖形對象的繪制函數(shù)如下表所示:函數(shù)說明create_arc繪制圓弧create_bitmap繪制位圖,支持XBM,bitmap= BitmapImage(file = filepath)create_image繪制圖片,支持GIF(x,y,image,anchor); image= PhotoImage(file=./xxx/xxx.gif),目前僅支持gif格式create_line繪制直線create_oval;繪制橢圓create_polygon繪制多邊形create_rectangle繪制矩形create_tex
37、t繪制文字create_window繪制窗口Delete刪除繪制的圖形Itemconfig修改圖形屬性,第一個(gè)參數(shù)為圖形的ID,后邊為想修改的參數(shù)Move移動(dòng)圖像coords(ID)返回對象的位置的兩個(gè)坐標(biāo)(4個(gè)數(shù)字元組)表6-12 Canvas畫布繪制函數(shù)6.3 窗口內(nèi)圖形繪制6.3.2 繪制圖形對象 Canvas6.3 窗口內(nèi)圖形繪制6.3.2 繪制圖形對象 Canvas上的每個(gè)繪制對象都有一個(gè)標(biāo)識id(整數(shù)),使用繪制函數(shù)創(chuàng)建繪制對象時(shí),返回繪制對象id。例如繪制一條直線,起點(diǎn)為(0,0),終點(diǎn)為(200,200),線寬為2。id1=cv.create_line(0,0,200,200,
38、width=2) 【例題6-11】創(chuàng)建一個(gè)綠色背景的Canvas畫布,并在畫布上繪制一條直線。程序代碼及運(yùn)行效果如下:from tkinter import *root=Tk()root.title(簡單繪畫)root.geometry(400 x300)# width,height:設(shè)置畫布的寬高,bg:設(shè)置背景色can=Canvas(root,width=400,height=300,bg=green)# 繪制一條線,起點(diǎn)-終點(diǎn),線寬can.create_line(0,0,200,200),width=4)# 繪制文字,前兩個(gè)參數(shù)為字的位置can.create_text(300,30,te
39、xt=Canvas繪制直線,font=(Arial, 18)can.pack() # 布局方式root.mainloop() #進(jìn)入消息循環(huán)程序源文件見6-116.3 窗口內(nèi)圖形繪制6.3.2 繪制圖形對象 Canvas6.3 窗口內(nèi)圖形繪制6.3.2 繪制圖形對象 使用create-rectangle()方法可以創(chuàng)建矩形對象。具體語法如下:【例題6-12】創(chuàng)建矩形對象例子,要求矩形填充色為橘黃色,邊框?yàn)榧t色,邊框?qū)挾葹?,矩形左上角點(diǎn)的坐標(biāo)為(20,20),右下角坐標(biāo)為(200,200) 。程序代碼及運(yùn)行效果如下:Canvas對象.create_rectangle(矩形左上角的x坐標(biāo),矩形左
40、上角的y坐標(biāo),矩形右下角的x坐標(biāo),矩形右下角的y坐標(biāo),選項(xiàng),)from tkinter import *root=Tk()root.title(創(chuàng)建矩形)rect=Canvas(root,width=200,height=200)# 繪制矩形,填充色為橘黃色,邊框?yàn)榧t色rect.create_rectangle(20,20,200,200,width=2,fill=orange,outline=red)rect.pack() # 布局方式root.mainloop() #進(jìn)入消息循環(huán)程序源文件見6-126.3 窗口內(nèi)圖形繪制6.3.2 繪制圖形對象 使用crea6.4 Python事件處理6.
41、4.1 事件類型 事件是指由用戶或系統(tǒng)觸發(fā)的一個(gè)特定的操作。例如,用鼠標(biāo)單擊命令按鈕,將會(huì)觸發(fā)事件。(1)一個(gè)對象包含有很多個(gè)系統(tǒng)預(yù)先規(guī)定的事件。事件一旦被觸發(fā),系統(tǒng)就會(huì)去執(zhí)行與該事件對應(yīng)的程序。過程執(zhí)行結(jié)束后,系統(tǒng)重新處于等待某事件發(fā)生的狀態(tài),這種程序執(zhí)行方式稱為應(yīng)用程序的事件驅(qū)動(dòng)工作方式。(2)事件類型必須放在內(nèi)。(3)Python中的事件主要有:鍵盤事件、鼠標(biāo)事件、窗體事件。6.4 Python事件處理6.4.1 事件類型 6.4 Python事件處理6.4.1 事件類型 名稱描述KeyPress按下鍵盤某個(gè)按鍵時(shí)觸發(fā),可以在detail部分指定哪個(gè)鍵KeyRelease釋放鍵盤某個(gè)按鍵
42、時(shí)觸發(fā),可以在detail部分指定哪個(gè)鍵表6-14鍵盤事件表6-15鼠標(biāo)事件名稱描述ButtonPress或者Button按下鼠標(biāo)某鍵,可以在detail部分指定是哪個(gè)鍵ButtonRelease釋放鼠標(biāo)某鍵,可以在detail部分指定是哪個(gè)鍵Motion選中組件的同時(shí)拖動(dòng)組件移動(dòng)時(shí)觸發(fā)Enter當(dāng)鼠標(biāo)指針移動(dòng)入到某組件時(shí)觸發(fā)Leave當(dāng)鼠標(biāo)指針移除到某組件時(shí)觸發(fā)MouseWheel當(dāng)鼠標(biāo)滾輪滾動(dòng)時(shí)觸發(fā)名稱描述Visibility當(dāng)組件變?yōu)榭梢暊顟B(tài)時(shí)爆發(fā)Unmap當(dāng)組件由顯示狀態(tài)變?yōu)殡[藏狀態(tài)時(shí)觸發(fā)Map當(dāng)組件由隱藏狀態(tài)變?yōu)轱@示狀態(tài)時(shí)觸發(fā)Expose當(dāng)組件從原本被其他組件遮蓋的狀態(tài)中暴露出來時(shí)觸發(fā)Focusln組件獲得焦點(diǎn)時(shí)觸發(fā)FocusOut組件失去焦點(diǎn)時(shí)觸發(fā)Configure當(dāng)改變組件大小時(shí)觸發(fā)。例如拖動(dòng)窗體邊緣Propertly當(dāng)窗體的屬性被刪除或者改變時(shí)觸發(fā),屬于TK的核心事件Destroy當(dāng)組件被銷毀時(shí)觸發(fā)表6-16窗體事件6.4 Python事件處理6.4.1 事件類型 6.4 Python事件處理6.4.2 事件處理函數(shù) 事件處理函數(shù)是響應(yīng)某個(gè)事件而調(diào)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年臨時(shí)租賃合同樣本(2篇)
- 2025年個(gè)人無抵押借款合同格式版(2篇)
- 2025年個(gè)人簡單勞動(dòng)合同常用版(4篇)
- 2025年臨時(shí)聘用協(xié)議經(jīng)典版(2篇)
- 2025年書面勞動(dòng)合同(三篇)
- 2025年臨時(shí)聘用協(xié)議簡單版(三篇)
- 2025年二婚婚前協(xié)議參考樣本(2篇)
- 2025年個(gè)人門面常用版房屋租賃合同(2篇)
- 北京市裝修工程驗(yàn)收合同
- 產(chǎn)業(yè)升級渣土運(yùn)輸協(xié)議樣本
- 茶文化與茶健康教學(xué)課件
- 建筑公司工程財(cái)務(wù)報(bào)銷制度(精選7篇)
- 降水預(yù)報(bào)思路和方法
- 工程設(shè)計(jì)方案定案表
- 第一章-天氣圖基本分析方法課件
- 虛位移原理PPT
- 初二物理彈力知識要點(diǎn)及練習(xí)
- QE工程師簡歷
- 輔音和輔音字母組合發(fā)音規(guī)則
- 2021年酒店餐飲傳菜員崗位職責(zé)與獎(jiǎng)罰制度
- 最新船廠機(jī)艙綜合布置及生產(chǎn)設(shè)計(jì)指南
評論
0/150
提交評論