




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第13章 基于thinter的GUI編程第1頁(yè),共32頁(yè)。本章內(nèi)容13.1 常用的Python GUI13.2 使用tkinter創(chuàng)建GUI程序13.3 認(rèn)識(shí)tkinter的控件13.4 幾何位置的設(shè)置13.5 tkinter的事件13.6 Button控件13.7 Canvas控件13.8 Checkbutton控件13.9 Entry控件13.13 Label控件13.11 Listbox控件13.12 Menu控件13.13 Message控件13.14 Radiobutton控件13.15 Scale控件13.16 Scrollbar控件13.17 Text控件13.18 Toplev
2、el控件13.19 對(duì)話框第2頁(yè),共32頁(yè)。13.1 常用的Python GUI1. tkintertkinter是Python的標(biāo)準(zhǔn)GUI接口。它不僅可以運(yùn)行在windows系統(tǒng)里,還可以在大多數(shù)的Unix平臺(tái)下使用。由于tkinter庫(kù)使用非常廣泛,所以本章節(jié)將重點(diǎn)講述tkinter模塊的使用方法和技巧。2. wxPython:wxPython 是一款開(kāi)源軟件,是 Python 語(yǔ)言的一套優(yōu)秀的 GUI 圖形庫(kù),允許 Python 程序員很方便的創(chuàng)建完整的、功能鍵全的GUI用戶界面。wxPython是使用Python語(yǔ)言寫(xiě)的GUI工具程序,它是wxWindows C+函數(shù)庫(kù)的轉(zhuǎn)換器,wxP
3、ython可以跨平臺(tái)。3. JythonJython程序可以和Java無(wú)縫集成。除了一些標(biāo)準(zhǔn)模塊,Jython使用Java的模塊。Jython幾乎擁有標(biāo)準(zhǔn)的Python中不依賴于C語(yǔ)言的全部模塊。比如,Jython的用戶界面將使用Swing,AWT或者SWT。Jython可以被動(dòng)態(tài)或靜態(tài)地編譯成Java字節(jié)碼。第3頁(yè),共32頁(yè)。13.2 使用tkinter創(chuàng)建GUI程序tkinter是Python的標(biāo)準(zhǔn)GUI庫(kù)。Python使用tkinter可以快速的創(chuàng)建GUI應(yīng)用程序。由于tkinter是內(nèi)置到python的安裝包中、只要安裝好Python之后就能加載tkinter庫(kù)。對(duì)于簡(jiǎn)單的圖形界面,使
4、用tkinter庫(kù)可以輕松完成。當(dāng)安裝好Python 3.6后,tkinter也會(huì)隨著安裝。所以用戶要使用tkinter的功能,只需要加載tkinter模塊即可。如下所示:import tkinter第4頁(yè),共32頁(yè)。13.3 認(rèn)識(shí)tkinter的控件控件名稱說(shuō)明Button按鈕控件;在程序中顯示按鈕。Canvas畫(huà)布控件;用來(lái)畫(huà)圖形,例如線條以及多邊形等Checkbutton多選框控件;用于在程序中提供多項(xiàng)選擇框Entry輸入控件;定義一個(gè)簡(jiǎn)單的文字輸入字段。Frame框架控件;定義一個(gè)窗體,以作為其他控件的容器。Label標(biāo)簽控件;定義一個(gè)文字或是圖片標(biāo)簽。Listbox列表框控件;此控件
5、定義一個(gè)下拉方塊。Menu菜單控件;定義一個(gè)菜單欄,下拉菜單和彈出菜單。Menubutton菜單按鈕控件;用于顯示菜單項(xiàng)。Message消息控件;定義一個(gè)對(duì)話框。Radiobutton單選按鈕控件;定義一個(gè)單選按鈕。Scale范圍控件;定義一個(gè)滑動(dòng)條,來(lái)幫助用戶設(shè)置數(shù)值。Scrollbar滾動(dòng)條控件;定義一個(gè)滾動(dòng)條。Text文本控件;定義一個(gè)文本框。Toplevel此控件與Frame控件類(lèi)似,可以作為其他控件的容器。但是此控件有自己的最上層窗口,可以提供窗口管理接口。第5頁(yè),共32頁(yè)。13.4 幾何位置的設(shè)置13.4.1 pack()方法13.4.2 grid()方法13.4.3 place(
6、)方法第6頁(yè),共32頁(yè)。13.4.1 pack()方法pack()方法依照其內(nèi)的屬性設(shè)置,將控件放置在Frame控件(窗體)或是窗口內(nèi)。當(dāng)用戶創(chuàng)建了一個(gè)Frame控件后,就可以將控件開(kāi)始放入,F(xiàn)rame控件內(nèi)儲(chǔ)存控件的地方叫做parcel。如果用戶想要將一群控件依照順序放入,必須將這些控件的anchor屬性設(shè)成相同。如果沒(méi)有設(shè)置任何選項(xiàng),則這些控件會(huì)從上而下排列。第7頁(yè),共32頁(yè)。13.4.2 grid()方法grid()方法將控件依照表格的欄列方式,來(lái)放置在窗體或是窗口內(nèi)。grid()方法有下列選項(xiàng): row:此選項(xiàng)設(shè)置控件在表格中的第幾列。 column:此選項(xiàng)設(shè)置控件在表格中的第幾欄。
7、columnspan:此選項(xiàng)設(shè)置控件在表格中合并欄的數(shù)目。 rowspan:此選項(xiàng)設(shè)置控件在表格中合并列的數(shù)目。第8頁(yè),共32頁(yè)。13.4.3 place()方法place()方法設(shè)置控件在窗體或是窗口內(nèi)的絕對(duì)地址或是相對(duì)地址。place()方法有下列選項(xiàng): anchor:此選項(xiàng)定義控件在窗體或是窗口內(nèi)的方位??梢允荖,NE,E,SE,S,SW,W,NW,或是CENTER。默認(rèn)值是NW,表示在左上角方位。 bordermode:此選項(xiàng)定義控件的坐標(biāo),是否要考慮邊界的寬度。此選項(xiàng)可以是OUTSIDE或是INSIDE,默認(rèn)值是INSIDE。 height:此選項(xiàng)定義控件的高度,單位是像素。 wid
8、th:此選項(xiàng)定義控件的寬度,單位是像素。第9頁(yè),共32頁(yè)。13.5 tkinter的事件13.5.1 事件的屬性13.5.2 事件綁定方法13.5.3 鼠標(biāo)事件13.5.4 鍵盤(pán)事件13.5.5 系統(tǒng)協(xié)議第10頁(yè),共32頁(yè)。13.5.1 事件的屬性當(dāng)有事件發(fā)生時(shí),tkinter會(huì)傳給事件處理例程一個(gè)event變量,此變量包含下列屬性: char:鍵盤(pán)的字符碼,例如a鍵的char屬性等于a,F(xiàn)1鍵的char屬性無(wú)法顯示。 keycode:鍵盤(pán)的ASCII碼,例如a鍵的keycode屬性等于65。 keysym:鍵盤(pán)的符號(hào),例如a鍵的keysym屬性等于a,F(xiàn)1鍵的keysym屬性等于F1。 he
9、ight,width:控件的新高度與寬度,單位是像素。 num:事件發(fā)生時(shí)的鼠標(biāo)按鍵碼。第11頁(yè),共32頁(yè)。13.5.2 事件綁定方法用戶可以使用下列tkinter控件的方法,將控件與事件綁定起來(lái)。 after(milliseconds , callback , arguments):在milliseconds時(shí)間后,調(diào)用callback函數(shù),arguments是callback函數(shù)的參數(shù)。此方法返回一個(gè)identifier值,可以應(yīng)用在after_cancel()方法。 after_cancel(identifier):取消callback函數(shù),identifier是after()函數(shù)的返回
10、值。 after_idle(callback, arguments):當(dāng)系統(tǒng)在idle狀態(tài)(無(wú)事可做)時(shí),調(diào)用callback函數(shù)。第12頁(yè),共32頁(yè)。13.5.3 鼠標(biāo)事件當(dāng)處理鼠標(biāo)事件時(shí),1代表鼠標(biāo)左鍵,2代表鼠標(biāo)中間鍵,3代表鼠標(biāo)右鍵。下列是鼠標(biāo)事件: :此事件在鼠標(biāo)指針進(jìn)入控件時(shí)發(fā)生。 :此事件在鼠標(biāo)指針離開(kāi)控件時(shí)發(fā)生。 ,或是:此事件在控件上單擊鼠標(biāo)左鍵時(shí)發(fā)生。同理是在控件上單擊鼠標(biāo)中間鍵時(shí)發(fā)生,是在控件上單擊鼠標(biāo)右鍵時(shí)發(fā)生。第13頁(yè),共32頁(yè)。13.5.4 鍵盤(pán)事件可以處理所有的鍵盤(pán)事件,包括Ctrl,Alt,F(xiàn)1,Home等特殊鍵。下列是鍵盤(pán)事件: :此事件在按下ASCII碼為4
11、890時(shí)發(fā)生,即數(shù)字鍵,字母鍵,以及(+),()等符號(hào)。 :此事件在按下Ctrl+Up鍵時(shí)發(fā)生。同理您可以使用類(lèi)似的名稱在Alt,Shift再加上Up,Down,Left,與Right鍵。第14頁(yè),共32頁(yè)。13.5.5 系統(tǒng)協(xié)議tkinter提供攔截系統(tǒng)信息的機(jī)制,用戶可以攔截這些系統(tǒng)信息然后設(shè)置成自己的處理例程,這個(gè)機(jī)制稱為協(xié)議處理例程(protocol handler)。通常處理的協(xié)議如下: WM_DELETE_WINDOW:當(dāng)系統(tǒng)要關(guān)閉該窗口時(shí)發(fā)生。 WM_TAKE_FOCUS:當(dāng)應(yīng)用程序得到焦點(diǎn)時(shí)發(fā)生。第15頁(yè),共32頁(yè)。13.6 Button控件Button控件用來(lái)創(chuàng)建按鈕,按鈕內(nèi)
12、可以顯示文字或是圖片。下列是Button控件的方法: flash():將前景與背景顏色互換,來(lái)產(chǎn)生閃爍的效果。 invoke():執(zhí)行command屬性所定義的函數(shù)。第16頁(yè),共32頁(yè)。13.7 Canvas控件Canvas控件用來(lái)創(chuàng)建與顯示圖形,例如弧形,位圖,圖片,線條,橢圓形,多邊形,以及矩形等。create_arc(coord, start, extent, fill):創(chuàng)建一個(gè)弧形。參數(shù)coord定義畫(huà)弧形區(qū)塊的左上角與右下角坐標(biāo),參數(shù)start定義畫(huà)弧形區(qū)塊的起始角度(反時(shí)針?lè)较?,參數(shù)extent定義畫(huà)弧形區(qū)塊的結(jié)束角度(反時(shí)針?lè)较?,參數(shù)fill定義填滿弧形區(qū)塊的顏色。第17頁(yè)
13、,共32頁(yè)。13.8 Checkbutton控件Checkbutton控件用來(lái)創(chuàng)建復(fù)選框。下列是Checkbutton控件的屬性: onvalue,offvalue:設(shè)置Checkbutton控件的variable屬性所指定的變量,所要存儲(chǔ)的數(shù)值。如果復(fù)選框沒(méi)有被選中,此變量的值為offvalue。如果復(fù)選框被選中,此變量的值為onvalue。 indicatoron:將此屬性設(shè)置成0,您可以將整個(gè)控件變成復(fù)選框。第18頁(yè),共32頁(yè)。13.9 Entry控件Entry控件用來(lái)在窗體或是窗口內(nèi),創(chuàng)建一個(gè)單行的文本框。下列是Entry控件的屬性:textvariable:此屬性為用戶輸入的文字,或
14、是要顯示在Entry 控件內(nèi)的文字。下列是Entry控件的方法:get():此方法可以讀取Entry widget內(nèi)的文字。第19頁(yè),共32頁(yè)。13.10 Label控件Label控件用來(lái)創(chuàng)建一個(gè)顯示方塊,可以在這個(gè)顯示方塊內(nèi)放置文字或是圖片。當(dāng)用戶在Entry控件內(nèi)輸入數(shù)值時(shí),其值會(huì)存儲(chǔ)在tkinter的StringVar類(lèi)內(nèi)。可以將Entry控件的textvariable屬性,設(shè)置成StringVar類(lèi)的實(shí)例變量,讓用戶輸入的數(shù)值自動(dòng)顯示在Entry 控件上。expression = StringVar()entry = Entry(frame, textvariable=expressi
15、on)entry.pack()第20頁(yè),共32頁(yè)。13.11 Listbox控件Listbox控件用來(lái)創(chuàng)建一個(gè)列表框。列表框內(nèi)可以包含許多選項(xiàng),用戶可以只選擇一項(xiàng)或是選擇多項(xiàng)。下列是Listbox控件的屬性: height:列表框的行數(shù)目。如果此屬性為0,則自動(dòng)設(shè)置成能找到的最大選擇項(xiàng)數(shù)目。 selectmode:此屬性設(shè)置列表框的種類(lèi),可以是SINGLE,EXTENDED,MULTIPLE,或是BROWSE。第21頁(yè),共32頁(yè)。13.12 Menu控件Menu控件用來(lái)創(chuàng)建三種類(lèi)型的菜單:pop-up(快捷式菜單),toplevel(主目錄),與pull-down(下拉式菜單)。下列是Menu
16、控件的方法: add_command(options):新增一個(gè)菜單項(xiàng)。 add_radiobutton(options):創(chuàng)建一個(gè)選擇鈕菜單項(xiàng)。 add_checkbutton(options):創(chuàng)建一個(gè)復(fù)選框菜單項(xiàng)。 add_cascade(options):將一個(gè)指定的菜單與其父菜單連結(jié),創(chuàng)建一個(gè)新的級(jí)聯(lián)菜單。第22頁(yè),共32頁(yè)。13.13 Message控件Message控件用來(lái)顯示多行,不可編輯的文字。Message控件會(huì)自動(dòng)分行,并且編排文字的位置。Message控件與Label控件的功能類(lèi)似,但是Message控件多了自動(dòng)編排的功能。第23頁(yè),共32頁(yè)。13.14 Radiobu
17、tton控件Radiobutton控件用來(lái)創(chuàng)建一個(gè)單選按鈕。為了讓一群?jiǎn)芜x按鈕可以執(zhí)行相同的功能,您必須設(shè)置這群?jiǎn)芜x按鈕的variable屬性為相同值,value屬性值則是各單選按鈕的數(shù)值。下列是Radiobutton控件的屬性: command:當(dāng)用戶單擊此單選按鈕時(shí),所調(diào)用的函數(shù)。 variable:當(dāng)用戶單擊此單選按鈕時(shí),要更新的變量。 width:當(dāng)用戶單擊此單選按鈕時(shí),要存儲(chǔ)在變量?jī)?nèi)的值。第24頁(yè),共32頁(yè)。13.15 Scale控件Scal控件用來(lái)創(chuàng)建一個(gè)標(biāo)尺式的滑動(dòng)條對(duì)象,讓您可以移動(dòng)標(biāo)尺上的光標(biāo)來(lái)設(shè)置數(shù)值。下列是Scale控件的方法: get():取得目前標(biāo)尺上的光標(biāo)值。 se
18、t(value):設(shè)置目前標(biāo)尺上的光標(biāo)值。第25頁(yè),共32頁(yè)。13.16 Scrollbar控件Scrollbar控件用來(lái)創(chuàng)建一個(gè)水平或是垂直滾動(dòng)條,可與Listbox,Text,Canvas等控件共同使用來(lái)移動(dòng)顯示的范圍。下列是Scrollbar控件的方法: set(first, last):設(shè)置目前的顯示范圍,其值在0與1之間。 get():返回目前的滾動(dòng)條設(shè)置值。第26頁(yè),共32頁(yè)。13.17 Text控件Text控件用來(lái)創(chuàng)建一個(gè)多行,格式化的文本框。用戶可以改變文本框內(nèi)的字體,文字顏色。下列是Text控件的屬性: state:此屬性值可以是normal或是disabled。state等
19、于normal表示此文本框可以編輯內(nèi)容。state等于disabled表示此文本框可以不編輯內(nèi)容。 tabs:此屬性值為一個(gè)tab位置的列表。列表中的元素是tab位置的索引值,再加上一個(gè)調(diào)整字符:l,r,c。l代表left,r代表right,c代表center。 第27頁(yè),共32頁(yè)。13.18 Toplevel控件Toplevel widget用來(lái)創(chuàng)建一個(gè)獨(dú)立窗口,此獨(dú)立窗口可以不必有父控件。Toplevel 控件擁有與tkinter.Tk()方法所打開(kāi)窗口的所有特性,同時(shí)還擁有下列方法: deiconify():在使用iconify()或是withdraw()方法后,顯示該窗口。 frame():返回一個(gè)系統(tǒng)特定的窗口識(shí)別碼。 group(window):將此窗口加入window窗口群組中。第28頁(yè),共32頁(yè)。13.19 對(duì)話框13.19.1 messagebox模塊13.19.2 filedialog模塊13.19.3 colorchooser模塊第2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 屏幕維保方案(3篇)
- 裝修客戶維系方案(3篇)
- 軟件實(shí)施方案(3篇)
- DB23-T2969-2021-寒地蘋(píng)果套種草莓栽培技術(shù)規(guī)程-黑龍江省
- DB23-T2844-2021-電子政務(wù)云平臺(tái)安全管理規(guī)范-黑龍江省
- 公司崗變薪變管理制度
- 古茗企業(yè)成本管理制度
- 制鞋工廠日常管理制度
- 加盟方案保密協(xié)議(3篇)
- 勘探公司安全管理制度
- 2024年江蘇省昆山市事業(yè)單位公開(kāi)招聘教師崗考試題帶答案分析
- 2025年無(wú)人機(jī)操控師考試試題及答案
- 2025年蘇州市中考英語(yǔ)二模模擬試題(六)(含解析)
- 第六單元不規(guī)則或組合圖形的周長(zhǎng)“拓展型”專項(xiàng)練習(xí)-五年級(jí)數(shù)學(xué)下冊(cè)典型例題(原卷版)蘇教版
- 2025年中考物理答題技巧與模式專題08壓強(qiáng)與浮力的常考難點(diǎn)綜合計(jì)算(學(xué)生版+解析)
- 2025年中考化學(xué)模擬考試試卷附帶答案
- 水電使用合同協(xié)議書(shū)
- 考古發(fā)掘考試試題及答案
- 2025年六五環(huán)境日生態(tài)環(huán)保常識(shí)及法律知識(shí)有獎(jiǎng)競(jìng)答題庫(kù)及答案(共90題)
- 上海市社區(qū)工作者管理辦法
- 湖南師范大學(xué)學(xué)位英語(yǔ)歷年考試真題
評(píng)論
0/150
提交評(píng)論