




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Python 3 程序設(shè)計(jì) 主講教師: 人民郵電出版社11 tkinter GUI編程人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列第11章 tkinter GUI編程 本章內(nèi)容本章內(nèi)容 tkinter編程概述 tkinter GUI的布局管理 tkinter的常用組件 tkinter的事件處理 tkinter GUI的應(yīng)用開發(fā)圖形用戶界面(GUI)應(yīng)用程序是Python的重要應(yīng)用之一,標(biāo)準(zhǔn)庫tkinter用來實(shí)現(xiàn)圖形用戶界面。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.1 tkinter編程概述編程概述tkinter模塊是Python事
2、實(shí)上的GUI庫,包含在Python的基本安裝包中。使用tkinter模塊編寫的GUI程序是跨平臺(tái)的,可在多種操作系統(tǒng)中運(yùn)行。 第一個(gè)第一個(gè)tkinter GUI程序程序 組件和容器是GUI編程的兩個(gè)基本概念。 組件是指標(biāo)簽、按鈕、列表框等對(duì)象,需將其放在容器中顯示。 容器是指可放置其他組件或容器的對(duì)象。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.1 tkinter編程概述編程概述 第一第一個(gè)個(gè)tkinter GUI程序程序 tkinter GUI編程步驟(1)導(dǎo)入tkinter模塊。import tkinter 或 from tkinter import *(2
3、)創(chuàng)建主窗口對(duì)象,如果未創(chuàng)建主窗口對(duì)象,tkinter將以默認(rèn)的頂層窗口作為主窗口。(3)創(chuàng)建標(biāo)簽、按鈕、輸入文本框等組件對(duì)象。(4)打包組件,將組件顯示在其父容器中。pack()(5)啟動(dòng)事件循環(huán),GUI窗口啟動(dòng),等待響應(yīng)用戶操作。mainloop() 例11-1 帶有標(biāo)簽和按鈕的tkinter GUI程序。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.1 tkinter編程概述編程概述 設(shè)置窗口和組件的屬性設(shè)置窗口和組件的屬性 設(shè)置窗口屬性常用的方法有title()、geometry()和config()方法。1. title()方法和geometry()方法
4、title()方法用于設(shè)置窗口的標(biāo)題,geometry()用于方法設(shè)置窗口的大小。geometry()方法中的參數(shù)格式為“寬度x高度” 。例11-2 設(shè)置了標(biāo)題和大小的窗口。2. config()方法config()方法用于設(shè)置組件文本、對(duì)齊方式、前景色、背景色、字體等屬性。例11-3 使用config()方法配置組件屬性。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.2 tkinter GUI的布局管理的布局管理 容器中組件的布局是很繁瑣的,需要調(diào)整組件自身的大小,還要設(shè)計(jì)和其他組件的相對(duì)位置。 實(shí)現(xiàn)組件布局的方法被稱為布局管理器或幾何管理器。 tkinter使
5、用三種方法來實(shí)現(xiàn)布局:pack()、grid()、place(),。 Frame作為中間層的容器組件,可以分組管理組件,實(shí)現(xiàn)復(fù)雜的布局。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.2 tkinter GUI的布局管理的布局管理 使用使用pack()方法的方法的布局布局 pack()方法以塊的方式布局組件。 pack()方法將組件顯示在默認(rèn)位置,是最簡單、直接的用法。 pack()方法的參數(shù): side表示組件在容器中的位置; expand表示組件可拉伸; fill取值為X、Y或BOTH,填充X或Y方向上的空間; anchor表示組件在窗口中位置。人民郵電出版社P
6、ython 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.2 tkinter GUI的布局管理的布局管理 使用使用grid()方法的布局方法的布局 使用grid()方法的布局被稱為網(wǎng)格布局,它按照二維表格的形式,將容器劃分為若干行和列,組件的位置由行列所在位置確定。 在同一容器中,只能使用pack()方法或grid()方法中的一種布局方式。 grid()方法的參數(shù): row和column,組件所在的行和列的位置 rowspan和columnspan,組件從所在位置起跨的行數(shù)和跨的列數(shù) sticky,組件所在位置的對(duì)齊方式 例11-6 使用grid()方法設(shè)置組件布局。人民郵電出版社Pytho
7、n 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.2 tkinter GUI的布局管理的布局管理 使用使用place()方法的布局方法的布局 比grid()和pack()布局更精確地控制組件在容器中的位置。 如果容器大小調(diào)整,可能會(huì)出現(xiàn)布局不適應(yīng)的情況。 place()方法的參數(shù) x和y,用絕對(duì)坐標(biāo)指定組件的位置 height和width,指定組件的高度和寬度 relx和rely,按容器高度和寬度的比例來指定組件的位置 relheight和relwidth,按容器高度和寬度的比例來指定組件的高度和寬度 例11-7 使用place ()方法的布局。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)
8、計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.2 tkinter GUI的布局管理的布局管理 使用框架的復(fù)雜布局使用框架的復(fù)雜布局 框架( Frame),容器組件,通常用于對(duì)組件進(jìn)行分組 可以從而實(shí)現(xiàn)復(fù)雜的布局。 例11-8 用Frame實(shí)現(xiàn)的復(fù)雜布局。屬性屬性說明說明bd指定邊框?qū)挾萺elief指定邊框樣式,取值為FLAT(扁平,默 認(rèn) 值 ) 、 R A I S E D ( 凸 起 ) 、 SUNKEN(凹陷)、RIDGE(脊?fàn)?、GROOVE(凹槽)和 SOLID(實(shí)線)width和和height設(shè)置寬度或高度,如果忽略,容器通 常 根 據(jù) 內(nèi) 容 組 件 的 大 小 自 整Frame大小人民郵電出版社
9、Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列 11.3 tkinter的常用組件 Label組件組件 創(chuàng)建標(biāo)簽的組件,主要用于顯示不可修改的文本、圖片或者圖文混排內(nèi)容。屬性屬性說明說明text設(shè)置標(biāo)簽顯示的文本bg和和fg指定組件的背景色和前景色width和和height指定組件的寬度和高度padx和和pady組件內(nèi)文本 左右和上下 的預(yù)留空白寬度)anchor設(shè)置文本在組件內(nèi)部的位置justify設(shè)置文本對(duì)齊方式font設(shè)置字體例例11-9 測試標(biāo)簽的屬性測試標(biāo)簽的屬性。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列 11.3 tkinter的常用組件 B
10、utton組件組件 創(chuàng)建按鈕,用于響應(yīng)用戶的單擊操作,即單擊按鈕時(shí)將執(zhí)行指定的函數(shù)。 Button組件的command屬性用于指定響應(yīng)函數(shù)。 例11-10 單擊Button按鈕計(jì)算1100的累加值人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列 11.3 tkinter的常用組件 Entry組件組件 輸入組件,用于顯示和輸入簡單的單行文本。 部分屬性與Label組件相同。屬性屬性/方法方法說明說明state設(shè)置組件狀態(tài)。validate設(shè)置執(zhí)行validatecommand校驗(yàn)函數(shù)的時(shí)間validatecommand設(shè)置校驗(yàn)函數(shù)textvariable獲取組件內(nèi)容的變量g
11、et()返回組件中的全部字符delete( first,last=None)刪除從 first開始到last之前的字符 Entry組件的常用屬性和方法人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11tkinter的常用組件 Entry組件組件 控制變量控制變量??刂谱兞渴呛徒M件相關(guān)聯(lián)的一種對(duì)象。 例如,控制變量與Entry組件關(guān)聯(lián)時(shí),控制變量的值隨Entry組件的文本會(huì)關(guān)聯(lián)變化;將控制變量與Radiobutton組件(單選按鈕組)關(guān)聯(lián)時(shí),改變單選按鈕選擇時(shí),控制變量的值隨之改變;反之,改變控制變量的值,對(duì)應(yīng)值的單選按鈕被選中。 例11-11 輸入數(shù)據(jù)并計(jì)算累加和。著重
12、體會(huì)控制變量的概念。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列 11.3 tkinter的常用組件 Listbox組件組件 創(chuàng)建列表框,允許用戶一次選擇一個(gè)或多個(gè)列表項(xiàng)。 Listbox組件的部分屬性組件的部分屬性和方法和方法 Listvariable屬性關(guān)聯(lián)一個(gè)StringVar類型的控制變量,該變量關(guān)聯(lián)列表框全部選項(xiàng), Selectmode用于設(shè)置列表項(xiàng)選擇模式, activate(index)方法用于選中index對(duì)應(yīng)的列表項(xiàng)。 cursection()方法返回方法返回包含選中項(xiàng)包含選中項(xiàng)index的元組,無選中時(shí)返回的元組,無選中時(shí)返回空空元組。元組。 in
13、sert(index, relements)方法在方法在index位置插入一個(gè)或多個(gè)列表位置插入一個(gè)或多個(gè)列表項(xiàng)。項(xiàng)。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列 11.3 tkinter的常用組件 Listbox組件組件 get( first,last=None),返回包含first,last范圍內(nèi)的列表項(xiàng)的文本元組。 Listbox組件的部分方法將列表項(xiàng)位置(index)作為參數(shù)。Listbox組件中第一個(gè)列表項(xiàng)的index值為0,最后一個(gè)列表項(xiàng)index可以使用常量tkinter.END表示。當(dāng)前選中列表項(xiàng)的index值用常量tkinter.ACTIVE表示。
14、例例11-12 列表框操作示例。列表框操作示例。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列 11.3 tkinter的常用組件 其他組件其他組件 Radiobutton組件,用于創(chuàng)建單選按鈕組。 Checkbutton組件,用于創(chuàng)建復(fù)選框,用來標(biāo)識(shí)是否選定某個(gè)選項(xiàng)。 Text組件,用來顯示和編輯多行文本。 Spinbox輸入組件,用于創(chuàng)建在一組選項(xiàng)或一定范圍的數(shù)字內(nèi)滾動(dòng)選擇的組件。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.4 tkinter的事件處理的事件處理 圖形用戶界面經(jīng)常需要用戶對(duì)鼠標(biāo)、鍵盤等操作做出反應(yīng),這就是事件處理事件處
15、理。 產(chǎn)生事件的鼠標(biāo)、鍵盤等稱作事件源,其操作稱為事件事件。 對(duì)這些事件作出響應(yīng)的函數(shù),稱為事件處理程序事件處理程序。 事件處理通常使用組件的command參數(shù)參數(shù)或組件的bind()方法方法來實(shí)現(xiàn)。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.4 tkinter的事件處理的事件處理 使用使用command參數(shù)實(shí)現(xiàn)事件處理參數(shù)實(shí)現(xiàn)事件處理 單擊按鈕時(shí),將會(huì)觸發(fā)Button組件的command參數(shù)指定的函數(shù)。實(shí)際上是主窗口負(fù)責(zé)監(jiān)聽發(fā)生的事件,單擊按鈕時(shí)將觸發(fā)事件,然后調(diào)用指定的函數(shù)。 由command參數(shù)指定的函數(shù)也叫回調(diào)函數(shù)。 Radiobutton、Checkb
16、utton、Spinbox等組件,都支持使用command參數(shù)進(jìn)行事件處理。 例11-17是一個(gè)窗體驗(yàn)證的示例,單擊按鈕對(duì)提交的數(shù)據(jù)進(jìn)行驗(yàn)證,為了簡化程序,用戶名和密碼保存在一個(gè)字典中。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.4 tkinter的事件處理的事件處理 使用組件的使用組件的bind()方法實(shí)現(xiàn)事件處理方法實(shí)現(xiàn)事件處理 使用bind()方法來為組件事件綁定處理函數(shù)可以實(shí)現(xiàn)事件處理。widget.bind(event,handler)widget是事件源事件源,即產(chǎn)生事件的組件;event是事件事件或事件名稱;hander是事件處理程序。 常見事件名
17、稱如下。單擊鼠標(biāo)左鍵單擊鼠標(biāo)左鍵1/Button-1/ButtonPress-1松開鼠標(biāo)左鍵松開鼠標(biāo)左鍵ButtonRelease-1單擊鼠標(biāo)右鍵單擊鼠標(biāo)右鍵3/Button-3雙擊鼠標(biāo)左鍵雙擊鼠標(biāo)左鍵Double-1/Double-Button-1雙擊鼠標(biāo)右鍵雙擊鼠標(biāo)右鍵Double-3拖動(dòng)鼠標(biāo)移動(dòng)拖動(dòng)鼠標(biāo)移動(dòng)B1-Motion鼠標(biāo)移動(dòng)到區(qū)域鼠標(biāo)移動(dòng)到區(qū)域Enter例11-18 bind()方法實(shí)現(xiàn) 的事件處理人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列11.5 tkinger GUI的應(yīng)用的應(yīng)用設(shè)計(jì)了一個(gè)包含Label組件、Entry組件、Combobox組件、R
18、adiobutton組件、Checkbutton組件的GUI界面。 Combobox組件來自于tkinter.ttk模塊。 程序運(yùn)行后,輸入考生姓名,選擇考生省份、地區(qū),并選擇考生類別和專業(yè)等信息后,單擊“增加”按鈕,將學(xué)生信息添加到列表框中; 選中列表框中的信息后,單擊“刪除”按鈕,將刪除列表框中的信息。人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列人民郵電出版社Python 3 程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列小結(jié) 組件組件和容器的概念,設(shè)置窗口和組件的屬性的和容器的概念,設(shè)置窗口和組件的屬性的title()方法、方法、geometry()方法和方法和config()方法。方法。 tkint
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 管罩式熱交換器企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 良性位置性眩暈癥護(hù)理
- 護(hù)理工作中的溝通與技巧
- 商品車運(yùn)輸合同違約處理流程
- 機(jī)場系統(tǒng)運(yùn)營工作流程
- 陜西、山西省天一大聯(lián)考2024-2025學(xué)年高中畢業(yè)班階段性測試(七)語文試題及答案
- 個(gè)人入股分紅合作合同協(xié)議范本2模板標(biāo)準(zhǔn)
- 25年公司主要負(fù)責(zé)人安全培訓(xùn)考試試題及答案(網(wǎng)校專用)
- 25年公司安全管理人員安全培訓(xùn)考試試題及答案(有一套)
- 競爭態(tài)勢下的產(chǎn)業(yè)升級(jí)-全面剖析
- 美術(shù)教室裝修合同模板
- 陜西省漢中市高2025屆高三上學(xué)期第一次校際聯(lián)考試卷歷史(含答案)
- 2024華僑、港澳臺(tái)聯(lián)考高考數(shù)學(xué)試卷
- 2024年“五史”教育全文
- 海綿城市項(xiàng)目專項(xiàng)工程施工方案
- Unit 7 Happy Birthday!Section A(教學(xué)教學(xué)設(shè)計(jì))2024-2025學(xué)年人教版英語七年級(jí)上冊(cè)
- 同仁堂集團(tuán)招聘筆試題庫2024
- 2023年二級(jí)注冊(cè)計(jì)量師考試題目及答案
- 免疫治療中假性進(jìn)展的機(jī)制與評(píng)估標(biāo)準(zhǔn)
- 公路水運(yùn)工程施工企業(yè)主要負(fù)責(zé)人和安全生產(chǎn)管理人員考核大綱和模擬試題庫1
- 互動(dòng)硬件體感交互設(shè)備
評(píng)論
0/150
提交評(píng)論