第8章 圖形用戶界面設(shè)計_第1頁
第8章 圖形用戶界面設(shè)計_第2頁
第8章 圖形用戶界面設(shè)計_第3頁
第8章 圖形用戶界面設(shè)計_第4頁
第8章 圖形用戶界面設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章圖形用戶界面設(shè)計CONTENTS目錄8.1GUI編程步驟018.2tkinter控件應(yīng)用028.3對話框038.4事件處理048.1GUI編程步驟8.1.1創(chuàng)建主窗口導(dǎo)入tkinter模塊:fromtkinter

import*通過調(diào)用Tk類的無參數(shù)構(gòu)造函數(shù)Tk()來創(chuàng)建主窗口:窗口對象名=Tk()主窗口對象擁有一系列屬性和方法。默認情況下,主窗口的高度和寬度都是200像素,標題文字為“tk”,窗口背景顏色呈淺灰色。通過調(diào)用tkinter.Tk實例的keys()方法可以獲取主窗口對象所有資源名稱的列表。設(shè)置主窗口的相關(guān)屬性:窗口對象名["資源名稱"]=值通過調(diào)用主窗口對象的mainloop()方法使應(yīng)用程序便進入主事件循環(huán)過程:窗口對象名.mainloop()8.1.2添加控件要在主窗口中添加某種tkinter控件,首先要通過調(diào)用相應(yīng)控件類的構(gòu)造方法來創(chuàng)建控件實例,然后對該控件實例調(diào)用某種布局方法,即在創(chuàng)建主窗口實例與進入主窗口主循環(huán)事件之間添加以下代碼:控件實例名=控件類名(父容器,[屬性1=值1,屬性2=值2,...])控件實例名.布局方法()其中控件類名是由tkinter模塊提供的。tkinter控件有3種布局方法,即pack()、grid()和place()。8.1.3設(shè)置控件的屬性(1)創(chuàng)建控件實例時,通過向控件類構(gòu)造方法中傳遞關(guān)鍵字參數(shù)來設(shè)置控件的屬性。例如:lb=Label(root,text="標簽文本內(nèi)容",fg="red",font=("華文行楷",16))(2)創(chuàng)建控件實例后,通過資源名稱獲取或設(shè)置控件的屬性。例如:lb["text"]="修改后的標簽文本內(nèi)容"(3)通過調(diào)用控件實例的config()方法修改控件的屬性:控件實例名.config(屬性1=值,屬性2=值,...)(4)將控件實例的textvariable屬性綁定到tkinter內(nèi)部類型變量,用以獲取或設(shè)置控件的文本內(nèi)容。創(chuàng)建一個內(nèi)部類型變量:var=StringVar()將控件的textvariable屬性綁定到該變量:lb=Label(root,textvariable=var)通過該變量的get()方法來獲取text屬性值,通過該變量的set()來設(shè)置text屬性值。8.1.4

ikinter布局管理1.pack布局方式pack布局方式的特點是將所有控件組織成一行或一列。調(diào)用格式:控件實例名.pack(side=...,fill=...,expand=...,ipadx=...,ipady=...,padx=...,pady=...)2.grid布局方式grid布局方式的特點是將容器或框架看成是一個由行和列組成的二維表格,并將控件放置到表格的單元格中。調(diào)用格式:控件實例名.grid(row=...,rowspan=...,column=...,columnspan=...,ipadx=...,ipady=...,padx=...,pady=...,sticky=...)3.place布局方式place布局方式的特點是直接設(shè)置控件在主窗口或框架中的位置坐標,調(diào)用格式:控件實例名.place(anchor=...,x=...,y=...,relx=...,rely=...,width=…,height=…,relwidth=…,relheight=...)8.2tkinter控件應(yīng)用8.2.1按鈕控件創(chuàng)建按鈕控件:btn=Button(root,text=...,command=...)其中參數(shù)root表示主窗口對象或容器控件;參數(shù)text是一個字符串,用于指定按鈕上顯示的文本信息;參數(shù)command指定單擊按鈕時執(zhí)行的函數(shù),該函數(shù)也稱為按鈕的事件處理函數(shù)。設(shè)置command參數(shù)時,也可以利用匿名函數(shù)來調(diào)用函數(shù)并傳遞參數(shù):command=lambda:函數(shù)名(參數(shù)列表)創(chuàng)建按鈕實例后,還需要通過調(diào)用某種布局方法將按鈕注冊到本地窗口系統(tǒng)中,并通過某種布局方式呈現(xiàn)屏幕上。8.2.2提示性控件創(chuàng)建標簽控件:lb=Label(root,text=...)通過標簽控件來顯示圖像(1)創(chuàng)建圖像對象:img=PhotoImage(file=...)(2)通過標簽控件的image屬性來設(shè)置要顯示的圖像文件:標簽實例名["image"]=img創(chuàng)建消息控件:msg=Message(root,text=...)創(chuàng)建標簽框架控件:lf=LabelFrame(root,text=...)創(chuàng)建框架控件:fm=Frame(root,width=...,height=...,relief=...,bd=...)8.2.3文本框控件(1)1.單行文本框控件創(chuàng)建單行文本框控件:ety=Entry(root)其中root表示主窗口或容器控件。文本框控件的show屬性,可以用來屏蔽用戶輸入的文本。單行文本框控件的方法(1)ety.get(index1,index2)(2)ety.insert(start,string)(3)ety.replace(index1,index2,string)(4)ety.delete(index1,index2):(5)ety.focus()8.2.3文本框控件(2)2.多行文本框控件創(chuàng)建多行文本框:txt=Text(root)在多行文本框控件中插入按鈕:txt.window_create(index,window=btn)在多行文本框控件中嵌入圖像:txt.window_create(index,image=img)8.2.4選擇性控件創(chuàng)建單選按鈕控件:rb=Radiobutton(root,text=...,varaible=…,value=…,command=…)創(chuàng)建復(fù)選框控件:cb=Checkbutton(root,text=...,varaible=…,

command=…)創(chuàng)建列表框控件:lst=Listbox(root,listvariable=…,selectmode=…)使用selectmode屬性于指定列表框的選擇模式,該屬性的取值如下:SINGLE(單選)、MULTIPLE(簡單多選)、EXPANDED(擴展多選)以及BROWSE(瀏覽,默認值)。8.2.5滾動條和滑塊創(chuàng)建滾動條控件:sb=Scrollbar(root,orient=...,command=…)將滾動條綁定到文本框或列表框等控件:應(yīng)將滾動條的command屬性設(shè)置為要綁定控件的yview方法,以便在改變滾動條上滑塊位置時更新顯示內(nèi)容;另外還要將要綁定控件的yscrollcommand屬性設(shè)置為滾動條的set方法,以便在更新顯示內(nèi)容時更改滑塊的位置。創(chuàng)建滑塊控件:sc=Scale(root,length=…,width=…,from_=…,to=…,resolution=…,orient=…,variable=…,command=…)8.2.6菜單控件(1)1.主菜單創(chuàng)建主菜單系統(tǒng)主要包括以下步驟。(1)創(chuàng)建主菜單控件:mainmenu=Menu(root)(2)將主菜單控件綁定到主窗口對象:root["menu"]=mainmenuroot.config(menu=mainmenu)(3)在主菜單中創(chuàng)建下拉式菜單,以主菜單為容器控件創(chuàng)建菜單項:submnu=Menu(mainmenu

,tearoff=…)mainmenu.add_cascade(label="菜單標題",menu=submenu)(4)在下拉式菜單中添加菜單命令:submenu.add_command(label=…,accelerator=…

command=…)8.2.6菜單控件(2)2.上下文菜單創(chuàng)建上下文菜單的步驟與創(chuàng)建主菜單類似,只是不要菜單實例綁定到主窗口。為了在右鍵單擊某個控件時彈出菜單,需要調(diào)用菜單控件的post()方法在鼠標右鍵單擊位置顯示菜單。3.選項菜單創(chuàng)建選項菜單控件:om=OptionMenu(root,var,"選項1","選項2","選項3",…)8.2.7子窗口控件創(chuàng)建子窗口控件:newwin=Toplevel(root)創(chuàng)建子窗口實例后,可以通過調(diào)用title()方法設(shè)置其標題,通過調(diào)用geometry()方法設(shè)置其大小,還可以其上面創(chuàng)建和布局其他控件,或者為其添加菜單系統(tǒng)。子窗口屬于主窗口的子控件,關(guān)閉子窗口后不會影響主窗口,因此不會結(jié)束應(yīng)用程序的運行。如果關(guān)閉主窗口,則包括子窗口在內(nèi)的整個用戶界面都會關(guān)閉。8.2.8

ttk子模塊控件導(dǎo)入tkinter模塊和ttk子模塊:fromtkinterimport*fromtkinter.ttkimport*創(chuàng)建組合框控件:cmb=Combobox(root,textvariable=...,values=...)組合框控件的常用方法(1)get()(2)current()8.3對話框8.3.1消息對話框消息對話框是用于顯示消息文本的對話框,此類對話框通常包含一個圖標、一段文本和一些按鈕,可以讓用戶單擊通過相應(yīng)的按鈕來做出不同的響應(yīng)。創(chuàng)建模式消息對話框:變量名=消息對話框函數(shù)名(title=...,message=...)常用的消息對話框函數(shù)(1)askokcancel()(2)askquestion()(3)askyesno()(4)askretrycancel()(5)askyesnocancel()(6)showerror()(7)showinfo()(8)showwarning()8.3.2輸入對話框創(chuàng)建輸入對話框的調(diào)用格式:變量名=輸入對話框函數(shù)名(title=…,prompt=…)常用的輸入對話框函數(shù)(1)askstring():顯示字符串輸入對話框。(2)askinteger():顯示整數(shù)輸入對話框。(3)askfloat():顯示浮點數(shù)輸入對話框。8.3.3文件對話框文件對話框函數(shù)的調(diào)用格式如下:path=文件對話框函數(shù)(title=…,initialdir=...,filetypes=...,defaultextension=…)常用的文件對話框函數(shù)(1)askpenfilename():用于顯示一個打開文件對話框。(2)askpenfilenames():用于顯示一個打開文件對話框。(3)asksaveasfilename():用于顯示一個保存文件對話框。8.3.4顏色對話框顏色對話框函數(shù)調(diào)用格式:color=colorchooser(color=…[,選項列表])其中color指定打開顏色對話框時的默認顏色。該函數(shù)的返回值為元組類型,其中包含兩個元素,第一個元素是RGB十進制浮點數(shù)元組,第二個元素是RGB十六進制字符串。8.4事件處理8.4.1事件處理程序1.常用鼠標事件按下鼠標左鍵:<ButtonPress-1>;釋放鼠標左鍵:<ButtonRelease-1>;按住鼠標左鍵移動:<B1-Motion>;雙擊鼠標左鍵:<Double-Button-1>;轉(zhuǎn)動鼠標滾輪:<MouseWheel>;鼠標指針進入控件:<Enter>;鼠標指針離開控件:<Leave>。2.常用鍵盤事件按下鍵盤任意鍵:<Key>;按下字母鍵和數(shù)字鍵:<Key-字符>;按下回車鍵:<Return>;按下空格鍵:<space>;按下方向鍵:<Up>、<Down>、<Left>、<Right>;按下功能鍵:<F1>~<F12>;按下組合鍵:鍵名之間用減號連接3.事件對象發(fā)生每個事件時系統(tǒng)都會創(chuàng)建一個事

溫馨提示

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

最新文檔

評論

0/150

提交評論