版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Graphics圖形庫(kù)Graphics圖形庫(kù)是在tkinter圖形庫(kù)基礎(chǔ)上建立的,由graphics模塊組成。graphics模塊的所有功能都是依賴于tkinter模塊功能實(shí)現(xiàn)的。graphics模塊將tkinter模塊的繪圖功能以面向?qū)ο蟮姆绞街匦掳b,使初學(xué)者更容易學(xué)習(xí)和應(yīng)用。Graphics圖形庫(kù)1.模塊導(dǎo)入與圖形窗口graphics模塊文件(graphics.py)可以從網(wǎng)站/zelle/python下載,下載后將graphics.py文件與用戶自己的圖形程序放在一個(gè)目錄中,或者放在Python安裝目錄中即可。使用graphics繪圖,首先要導(dǎo)入graphics模塊,語(yǔ)句格式有如下兩種。>>>importgraphics>>>fromgraphicsimport*其次,使用graphics提供的GraphWin()函數(shù)創(chuàng)建一個(gè)圖形窗口。在圖形窗口中,設(shè)有標(biāo)題欄,以及“最小化”、“最大化”、“關(guān)閉”等按鈕。例如:>>>win=GraphWin()。Graphics圖形庫(kù)2.圖形對(duì)象在tkinter模塊中,只為畫布提供了Canvas類,而畫布上繪制的各種圖形并沒(méi)有對(duì)應(yīng)的類。因此,畫布是對(duì)象,而畫布的圖形并不是對(duì)象,不是按面向?qū)ο蟮娘L(fēng)格構(gòu)造的。graphics模塊就是為了改進(jìn)這一點(diǎn)而設(shè)計(jì)的。在graphics模塊中,提供了GraphWin(圖形窗口)、Point(點(diǎn))、Line(直線)、Circle(圓)、Oal(橢圓)、Rectangle(矩形)、Polygon(多邊形)、Text(文本)等類,利用類可以創(chuàng)建相應(yīng)的圖形對(duì)象。每個(gè)對(duì)象都是相應(yīng)的類的實(shí)例,對(duì)象都具有自己的屬性和方法(操作)。Graphics圖形庫(kù)(1)點(diǎn)graphics模塊提供了point類,用于在窗口中畫點(diǎn)。創(chuàng)建點(diǎn)對(duì)象的語(yǔ)句格式為:p=Point(x坐標(biāo),y坐標(biāo))下面先創(chuàng)建一個(gè)Point對(duì)象,然后調(diào)用Point對(duì)象的方法進(jìn)行各種操作。>>>fromgraphicsimport*>>>win=GraphWin()>>>p=Point(100,50)>>>p.draw(win)>>>print(p.getX(),p.getY())10050>>>p.move(20,30)>>>print(p.getX(),p.getY())12080Graphics圖形庫(kù)Point對(duì)象還提供以下方法:p.setFill():設(shè)置點(diǎn)p的顏色。p.setOutline():設(shè)置邊框的顏色。對(duì)Point對(duì)象來(lái)說(shuō),與setFill()方法沒(méi)有區(qū)別。p.undraw():隨藏對(duì)象p,即在圖形窗口中,對(duì)象p變成不可見(jiàn)。注意,隱藏并非刪除,對(duì)象p仍然存在,隨時(shí)可以重新執(zhí)行draw()。p.clone():復(fù)制一個(gè)與p一模一樣的對(duì)象。Graphics圖形庫(kù)(2)直線直線類Line用于繪制直線。創(chuàng)建直線對(duì)象的語(yǔ)句格式為:line=Line(端點(diǎn)1,端點(diǎn)2)其中,兩個(gè)端點(diǎn)都是Point對(duì)象。和Point對(duì)象一樣,Line對(duì)象也支持draw()、undrew()、move()、setFill()、setOutline()、clone()等方法。此外,Line對(duì)象還支持setArrow()方法,用于為直線畫箭頭,setWidth()方法用于設(shè)置直線寬度。Graphics圖形庫(kù)例
利用直線對(duì)象繪制一個(gè)正方形。程序如下:fromgraphicsimport*win=GraphWin("繪制正方形")p1=Point(50,50);p2=Point(150,50)p3=Point(150,150);p4=Point(50,150)l1=Line(p1,p2);l2=Line(p2,p3)l3=Line(p3,p4);l4=Line(p4,p1)l1.draw(win);l2.draw(win)l3.draw(win);l4.draw(win)p.getX(),p.getY())12080Graphics圖形庫(kù)(3)圓圓類為Circle,創(chuàng)建圓形對(duì)象的語(yǔ)句格式為:c=Circle(圓心,半徑)其中,圓心是Point對(duì)象,半徑是個(gè)數(shù)值。Circle對(duì)象同樣支持draw()、undraw()、setFill()、setOutline()、clone()、setWidth()等方法。此外,Circle對(duì)象還支持c.getRadius()方法,用于獲取圓形對(duì)象c的半徑。Graphics圖形庫(kù)例
繪制三個(gè)同心圓,并且將它們填充不同顏色。程序如下:fromgraphicsimport*win=GraphWin("繪制同心圓")pt=Point(100,100)cir1=Circle(pt,80)cir1.draw(win);cir1.setFill("green")cir2=Circle(pt,50)cir2.draw(win);cir2.setFill(color_rgb(100,100,255))cir3=Circle(pt,20)cir3.draw(win);cir3.setFill(color_rgb(255,0,0))Graphics圖形庫(kù)(4)橢圓橢圓類為Oval,創(chuàng)建橢圓對(duì)象的語(yǔ)句格式為:o=Oval(左上角,右下角)其中,左上角和右下角是兩個(gè)Point對(duì)象,用于指定一個(gè)矩形,再由這個(gè)矩形定義一個(gè)內(nèi)接橢圓。例
繪制四個(gè)相扣的圓,并且將它們的邊線設(shè)置成不同顏色,邊線寬度相同。程序如下:fromgraphicsimport*win=GraphWin("繪制四個(gè)相扣的圓",410,200)pt1=Point(50,50);pt2=Point(150,150)o1=Oval(pt1,pt2);o1.draw(win)o1.setOutline("red");o1.setWidth(6)o2=o1.clone() #復(fù)制相同的圓對(duì)象o2.draw(win);o2.move(70,0);o2.setOutline("black");o2.setWidth(6)o3=o2.clone()o3.draw(win);o3.move(70,0);o3.setOutline("blue");o3.setWidth(6)o4=o3.clone()o4.draw(win);o4.move(70,0);o4.setOutline("green");o4.setWidth(6)Graphics圖形庫(kù)(5)矩形矩形類為Rectangle,創(chuàng)建矩形對(duì)象的語(yǔ)句格式為:r=Rectangle(左上角,右下角)其中,左上角和右下角是兩個(gè)Point對(duì)象,用于指定矩形。Graphics圖形庫(kù)例
繪制如圖所示的正弦曲線圖形。程序如下:fromgraphicsimport*frommathimport*win=GraphWin("繪制正弦曲線",380,260)x=10foriinrange(0,36):pt1=Point(x,-100*sin(x*pi/180)+130)pt2=Point(x+10,130)r=Rectangle(pt1,pt2)r.draw(win);r.setFill("yellow")x+=10Graphics圖形庫(kù)(6)多邊形多邊形類為Polygon,創(chuàng)建多邊形對(duì)象的語(yǔ)句格式為:p=Polygon(頂點(diǎn)1,…,頂點(diǎn)n)將各頂點(diǎn)用直線相連,即形成多邊形。Graphics圖形庫(kù)例
繪制紅色的正五邊形。程序如下:fromgraphicsimport*frommathimport*win=GraphWin("繪制正五邊形",300,250)p1=Point(100,200)p2=Point(200,200)p3=Point(200+100*cos(pi*72/180),200-100*sin(pi*72/180))p4=Point(100+50,200-50/sin(pi*36/180)-50/tan(pi*36/180))p5=Point(100-100*cos(pi*72/180),200-100*sin(pi*72/180))p=Polygon(p1,p2,p3,p4,p5)p.draw(win);p.setFill("red")Graphics圖形庫(kù)(7)文本文本類為Text,創(chuàng)建文本對(duì)象的語(yǔ)句格式為:t=Text(中心點(diǎn),字符串)其中,中心點(diǎn)是個(gè)Point對(duì)象,字符串是顯示的文本內(nèi)容。Graphics圖形庫(kù)例
文本格式示例。程序如下:fromgraphicsimport*frommathimport*win=GraphWin("文本格式",320,160)p=Point(160,80)t=Text(p,"PythonProgramming")t.draw(win)t.setFace("arial")t.setSize(20)t.setStyle('bolditalic')Graphics圖形庫(kù)3.交互式圖形操作圖形用戶界面可以用于程序交互式的輸入和輸出,用戶通過(guò)單擊按鈕、選擇菜單欄中的選項(xiàng)以及在屏幕文本框中輸入文字等來(lái)與應(yīng)用程序進(jìn)行交互。當(dāng)用戶移動(dòng)鼠標(biāo)、單擊按鈕或者從鍵盤輸入數(shù)據(jù)時(shí),就產(chǎn)生了一個(gè)事件,這個(gè)事件被發(fā)送到圖形用戶界面的相應(yīng)對(duì)象進(jìn)行處理。例如,單擊按鈕會(huì)產(chǎn)生一個(gè)單擊事件,該事件將會(huì)傳遞給按鈕處理代碼,按鈕處理代碼將執(zhí)行相應(yīng)操作。graphics模塊提供了兩個(gè)簡(jiǎn)單的方法獲得用戶在圖形界面窗口中的操作事件。Graphics圖形庫(kù)(1)捕捉鼠標(biāo)單擊事件可以通過(guò)GraphWin類中的getMouse()方法獲得用戶在窗口內(nèi)單擊鼠標(biāo)的信息。當(dāng)getMouse()方法被一個(gè)GraphWin對(duì)象調(diào)用時(shí),程序?qū)⑼V共⒌却脩粼诖翱趦?nèi)單擊鼠標(biāo)。用戶單擊鼠標(biāo)的位置以Point對(duì)象作為返回值返回給程序??聪旅娴某绦?。fromgraphicsimport*win=GraphWin()p=win.getMouse()print(p.getX(),p.getY())getMouse()的返回值是一個(gè)Point對(duì)象,使用該對(duì)象的getX()和getY()方法可以得到單擊鼠標(biāo)的坐標(biāo)。Graphics圖形庫(kù)例
在窗口單擊鼠標(biāo)時(shí)繪制一個(gè)綠色的正方形。程序如下:fromgraphicsimport*win=GraphWin()p1=win.getMouse()p2=Point(p1.getX()+80,p1.getY()+80)r=Rectangle(p1,p2)r.draw(win);r.setFill("green")Graphics圖形庫(kù)(2)處理文本輸入graphics模塊還包括一個(gè)輸入對(duì)象Entry,用于獲取窗口中的鍵盤輸入事件。Entry對(duì)象在圖形窗口中創(chuàng)建一個(gè)文本框,它與Text對(duì)象類似,也使用setText()和getText()方法。不同之處在于Enter對(duì)象的內(nèi)容可以被用戶修改。例7.20創(chuàng)建一個(gè)圖形窗口,其中有一個(gè)輸入框,用于輸入攝氏溫度值,同時(shí)提供一個(gè)“溫度轉(zhuǎn)換”按鈕,單擊按鈕時(shí)能夠?qū)z氏溫度轉(zhuǎn)換為華氏溫度,同時(shí)“溫度轉(zhuǎn)換”變?yōu)椤巴顺觥卑粹o,單擊按鈕退出圖形窗口。程序如下:fromgraphicsimport*win=GraphWin("溫度轉(zhuǎn)換",300,200)t1=Text(Point(80,50),"攝氏溫度:")t1.setSize(10);t1.draw(win)t2=Text(Point(80,150),"華氏溫度:")t2.setSize(10);t2.draw(win)input=Entry(Point(200,50),8)input.setText("0")input.setSize(10);input.draw(win)output=Text(Point(150,150),"")output.draw(win)button=Text(Point(150,100),"溫度轉(zhuǎn)換")button.setSize(10
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年鐵路公司調(diào)度中心主任面試題集
- 培訓(xùn)機(jī)構(gòu)員工入伙協(xié)議書
- 小學(xué)科技節(jié)活動(dòng)在小學(xué)綜合實(shí)踐活動(dòng)中的應(yīng)用與實(shí)踐教學(xué)研究課題報(bào)告
- 高中數(shù)學(xué)教師數(shù)字技能發(fā)展及其激勵(lì)機(jī)制優(yōu)化策略教學(xué)研究課題報(bào)告
- 骨友靈巴布膏與其它外用膏劑的聯(lián)合治療機(jī)制-洞察及研究
- 綠色發(fā)展評(píng)估體系研究-洞察及研究
- 量子計(jì)算與人工智能的深度融合-洞察及研究
- 高中化學(xué)教師如何利用智能學(xué)習(xí)平臺(tái)提高學(xué)生實(shí)驗(yàn)操作能力的研究教學(xué)研究課題報(bào)告
- 綠色生產(chǎn)模式下的農(nóng)產(chǎn)品加工企業(yè)競(jìng)爭(zhēng)力分析-洞察及研究
- 量子隱形傳態(tài)與量子糾纏-洞察及研究
- 電工培訓(xùn)觸電急救課件
- 小型混凝土攪拌機(jī)畢業(yè)設(shè)計(jì)
- 小學(xué)數(shù)學(xué)主題圖
- 天津泰達(dá)股權(quán)激勵(lì)的案例分析
- 臥床病人的護(hù)理即翻身技巧課件
- 智能信報(bào)箱系統(tǒng)施工方案
- 嚴(yán)歌苓作品:霜降
- 西爾斯懷孕百科(升級(jí)版)
- 樓梯工程量計(jì)算表(模板、砼計(jì)算)
- 孔型設(shè)計(jì)的基本知識(shí)
- 百富系列灌裝培訓(xùn)手冊(cè)
評(píng)論
0/150
提交評(píng)論