版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章Tkinter圖形界面設計主講夏敏捷計算機學院副教授7.1Python圖形開發庫Python提供了多個圖形開發界面的庫,幾個常用PythonGUI庫如下:(1)Tkinter
(2)wxPython:wxPython是一款開源軟件,是Python語言的一套優秀的GUI圖形庫,允許Python程序員很方便的創建完整的、功能鍵全的GUI用戶界面。(3)Jython:Jython程序可以和Java無縫集成。除了一些標準模塊,Jython使用Java的模塊。Jython幾乎擁有標準的Python中不依賴于C語言的全部模塊。7.1.1創建Windows窗口【例7-1】Tkinter創建一個Windows窗口的GUI程序。importtkinter #導入Tkinter模塊win=tkinter.Tk() #創建Windows窗口對象win.title('我的第一個GUI程序') #設置窗口標題win.mainloop() #進入消息循環,也就是顯示窗口7.1.2幾何布局管理器Tkinter幾何布局管理器用于組織和管理父組件(往往是窗口)中子組件的布局方式。tkinter提供了3種不同風格的幾何布局管理類:pack、grid和place。1.pack幾何布局管理器7.1.2幾何布局管理器2.grid幾何布局管理器grid幾何布局管理采用表格結構組織組件。7.1.2幾何布局管理器3.place幾何布局管理器place幾何布局管理允許指定組件的大小與位置。place的優點是可以精確控制組件的位置,不足之處是改變窗口大小時,子組件不能隨之靈活改變大小。7.2常用Tkinter組件的使用7.2.1Tkinter組件7.2.2標準屬性組件標準屬性也就是所有組件(控件)的共同屬性,如大小,字體和顏色等等。常用的標準屬性如表7-5所示。7.2.3Label標簽組件Label組件用于在窗口中顯示文本或位圖。常用屬性如表7-6所示。7.2.4Button按鈕組件Button組件(控件)是一個標準的Tkinter部件,用于實現各種按鈕。按鈕可以包含文本或圖像,您可以通過command屬性將調用Python函數或方法關聯到按鈕上。Tkinter的按鈕被按下時,會自動調用該函數或方法。該按鈕可以只顯示一個單一字體的文本,但文本可能跨越多行。此外,一個字符可以有下劃線,例如標記的鍵盤快捷鍵。TkinterButton按鈕屬性和方法如表7-7和7-8所示。7.2.6列表框組件Listbox列表框組件Listbox用于顯示多個項目,并且允許用戶選擇一個或多個項目。7.2.7單選按鈕和復選框單選按鈕(Radiobutton)和復選框(Checkbutton)分別用于實現選項的單選和復選功能。Radiobutton用于同一組單選按鈕中選擇一個單選按鈕(不能同時選定多個)。Radiobutton可以顯示文本,也可以顯示圖像。Checkbutton用于選擇一項或多項,同樣Checkbutton可以顯示文本,也可以顯示圖像。7.2.7單選按鈕和復選框單選按鈕(Radiobutton)和復選框(Checkbutton)分別用于實現選項的單選和復選功能。Radiobutton用于同一組單選按鈕中選擇一個單選按鈕(不能同時選定多個)。Radiobutton可以顯示文本,也可以顯示圖像。Checkbutton用于選擇一項或多項,同樣Checkbutton可以顯示文本,也可以顯示圖像。圖形用戶界面應用程序通常提供菜單,菜單包含各種按照主題分組的基本命令。圖形用戶界面應用程序包括2種類型的菜單。主菜單:提供窗體的菜單系統。通過單擊可下拉出子菜單,選擇命令可執行相關的操作。常用的主菜單通常包括:文件、編輯、視圖、幫助等。上下文菜單(也稱為快捷菜單):通過鼠標右擊某對象而彈出的菜單,一般為與該對象相關的常用菜單命令。例如:剪切、復制、粘貼等。7.2.8菜單組件Menu7.2.9對話框對話框用于與用戶交互和檢索信息。tkinter模塊中的子模塊messagebox、filedialog、colorchooser、simpleDialog,包括一些通用的預定義對話框;用戶也可以通過繼承TopLevel創建自定義對話框。圖7-18打開文件對話框運行效果7.2.9對話框圖7-19打開顏色對話框運行效果7.2.10消息窗口(消息框)消息窗口(messagebox)用于彈出提示框向用戶進行告警,或讓用戶選擇下一步如何操作。消息框包括很多類型,常用的有info、warning、error、yesno、okcancel等,包含不同的圖標、按鈕以及彈出提示音。7.2.11Frame框架組件Frame組件是框架組件,在進行分組組織其他組件的過程中是非常重要的,負責安排其他組件的位置。Frame組件在屏幕上顯示為一個矩形區域,作為顯示其他組件的容器。7.2.12Scrollbar滾動條組件Scrollbar組件是滾動條組件,Scrollbar組件用于滾動一些組件的可見范圍,根據方向可分為垂直滾動條和水平滾動條。Scrollbar組件常常被用于實現文本、畫布和列表框的滾動。Scrollbar組件通常與Text組件、Canvas組件和Listbox組件一起使用,水平滾動條還能跟Entry組件配合。7.3圖形繪制7.3.1Canvas畫布組件Canvas(畫布)是一個長方形的區域,用于圖形繪制或復雜的圖形界面布局。可以在畫布上繪制圖形、文字,放置各種組件和框架。7.3圖形繪制7.3.2Canvas上的圖形對象Canvas畫布上可以繪制各種圖形對象。通過調用如下繪制函數實現。create_arc()繪制圓弧。create_line()繪制直線。create_bitmap()繪制位圖。create_image()繪制位圖圖像。create_oval()繪制橢圓。create_polygon()繪制多邊形。create_window()繪制子窗口。create_text()創建一個文字對象圖形對象id、標記(tag)id1=cv.create_line(10,10,100,80,width=2,dash=7)
#繪制直線id1可以得到繪制對象直線id。使用屬性tags設置圖形對象的標記(tag)rt=cv.create_rectangle(10,10,110,110,tags='r1')上面的語句指定矩形對象rt具有一個標記r1。rt=cv.create_rectangle(10,10,110,110,tags=('r1','r2','r3'))上面的語句指定矩形對象rt具有3個標記r1,r2,r3。使用find_withtag('r1')方法可以獲取到指定tag的圖形對象。【例7-24】使用屬性tags設置圖形對象標記的例子。fromtkinterimport*root=Tk()#創建一個Canvas,設置其背景色為白色cv=Canvas(root,bg='white',width=200,height=200)#使用tags指定給第一個矩形指定3個tagrt=cv.create_rectangle(10,10,110,110,tags=('r1','r2','r3'))cv.pack()cv.create_rectangle(20,20,80,80,tags='r3')#使用tags指定給第2個矩形指定1個tag#將所有與tag('r3')綁定的item邊框顏色設置為藍色foritemincv.find_withtag('r3'):cv.itemconfig(item,outline='blue')root.mainloop()2.繪制圓弧Canvas對象.create_arc(弧外框矩形左上角的x坐標,弧外框矩形左上角的y坐標,弧外框矩形右下角的x坐標,弧外框矩形右下角的y坐標,選項,...)【例7-25】使用create_arc()方法創建圓弧的例子。3.繪制線條canvas.create_line(x0,y0,x1,y1,...,xn,yn,選項)參數x0,y0,x1,y1,...,xn,yn是線段的端點。【例7-26】使用create_line()方法創建線條對象的例子。fromtkinterimport*root=Tk()cv=Canvas(root,bg='white',width=200,height=100)cv.create_line(10,10,100,10,arrow='none') #繪制沒有箭頭線段cv.create_line(10,20,100,20,arrow='first') #繪制起點有箭頭線段cv.create_line(10,30,100,30,arrow='last') #繪制終點有箭頭線段cv.create_line(10,40,100,40,arrow='both') #繪制兩端有箭頭線段cv.create_line(10,50,100,100,width=3,dash=7) #繪制虛線cv.pack()root.mainloop()7.4Tkinter字體7.4.1通過元組表示字體通過3個元素的元組,可以表示字體:(fontfamily,size,modifiers)作為一個元組tuple的第一個元素fontfamily是字體名,size為字體大小單位為point;modifiers為包含粗體、斜體、下劃線的樣式修飾符。7.4Tkinter字體7.4.2通過Font對象表示字體使用tkFont.Font來創建字體。格式如下:ft=tkFont.Font(family='字體名',size,weight,slant,underline,overstrike)其中:size為字體大小;weight='bold'或'normal','bold'為粗體;slant='italic'或'normal','italic'為斜體;underline=1或0,1為下劃線;overstrike=1或0,1為刪除線。ft=Font(family="Helvetica",size=36,weight="bold")【例7-32】繪制圖像示例,運行效果如圖7-31所示。7.5Python事件處理所謂事件(event)就是程序上發生的事。例如用戶敲擊鍵盤上某一個鍵或是單擊、移動鼠標。而對于這些事件,程序需要做出反應。Tkinter提供的組件通常都有自己可以識別的事件。例如當按鈕被單擊時執行特定操作或是當一個輸入欄成為焦點,而您又敲擊了鍵盤上的某些按鍵,您所輸入的內容就會顯示在輸入欄內。程序可以使用事件處理函數來指定當觸發某個事件時所做的反應(操作)。7.5.1事件類型事件類型的通用格式:<[modifier-]…type[-detail]>事件類型必須放置于尖括號<>內。type描述了類型,例如鍵盤按鍵、鼠標單擊。modifier用于組合鍵定義,例如Control、Alt。detail用于明確定義是哪一個鍵或按鈕的事件,例如1表示鼠標左鍵、2表示鼠標中鍵、3表示鼠標右鍵。舉例:<Button-1>按下鼠標左鍵。<KeyPress-A>按下鍵盤上的A鍵<Control-Shift-KeyPress-A>同時按下了Control、Shift、A三鍵。7.5.2事件綁定程序建立一個處理某一事件的事件處理函數,稱之為綁定。1.創建組件對象時指定創建組件對象實例時,可通過其命名參數command指定事件處理函數。例defcallback(): #事件處理函數
showinfo("Pythoncommand","人生苦短、我用Python")Bu1=Button(root,text="設置事件調用命令",command=callback)Bu1.pack()2.實例綁定調用組件對象實例方法bind可為指定組件實例綁定事件。這是最常用事件綁定方式。組件對象實例名.bind("<事件類型>",事件處理函數)例如假設聲明了一個名為canvas的Canvas組件對象,想在canvas上按下鼠標左鍵時畫上一條線,可以這樣實現:canvas.bind("<Button-1>",drawline)7.5.2事件綁定3.類綁定將事件與一組件類綁定。調用任意組件實例的.bind_class()函數為特定組件類綁定事件。組件實例名.bind_class("組件類","<事件類型>",事件處理函數)7.5.2事件綁定4.程序界面綁定當無論在哪一組件實例上觸發某一事件,程序都作出相應的處理。例如您可能會將PrintScreen鍵與程序中的所有組件對象綁定,這樣整個程序界面就能處理打印屏幕的事件了。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 葫蘆島市建昌縣教育系統“歸雁計劃”選調教師筆試真題2025
- 物流配送服務合同(2026版)
- 2023年6月同等學力申碩考試呼吸內科支原體肺炎預防基礎鞏固題及答案
- 宜賓市珙縣增量政策性崗位招募筆試真題2025
- 隴南市武都區城區學校和高中教師選調筆試真題2025
- 2026 年暴雨季節地下車庫安全防范宣講
- 2026年秋季學期小學語文教研組工作計劃
- 2026 年皮膚科護理專科質控管理實踐研討
- 2026年中西醫結合科老年病綜合護理規范
- 某發電廠安全操作準則
- 氣象行業公共服務技能競賽理論知識試題及答案
- GB/T 36699-2026鍋爐用液體和氣體燃料燃燒器技術規范
- 各部門、崗位人員及施工現場總分包安全生產責任制
- 平江2026年事業編招聘考試真題及答案解析
- (2026年)中小學陽光招生專項行動課件
- 2026四川安信科創科技有限公司第一批招聘12人筆試備考題庫及答案解析
- 2026 年高考(江蘇卷)地理試題及答案
- 2026年中國中鐵招聘面試題庫
- 質量保證體系及管理措施(完整的投標文件)
- 森林防火隔離帶開設施工方案
- 《數字電子技術》課件-第8章 數模和模數轉換
評論
0/150
提交評論