![《Python語言程序設(shè)計》 課件 第9章 圖形繪制_第1頁](http://file4.renrendoc.com/view2/M01/00/2C/wKhkFmaqJB2AS9P9AACt5qnCKBE800.jpg)
![《Python語言程序設(shè)計》 課件 第9章 圖形繪制_第2頁](http://file4.renrendoc.com/view2/M01/00/2C/wKhkFmaqJB2AS9P9AACt5qnCKBE8002.jpg)
![《Python語言程序設(shè)計》 課件 第9章 圖形繪制_第3頁](http://file4.renrendoc.com/view2/M01/00/2C/wKhkFmaqJB2AS9P9AACt5qnCKBE8003.jpg)
![《Python語言程序設(shè)計》 課件 第9章 圖形繪制_第4頁](http://file4.renrendoc.com/view2/M01/00/2C/wKhkFmaqJB2AS9P9AACt5qnCKBE8004.jpg)
![《Python語言程序設(shè)計》 課件 第9章 圖形繪制_第5頁](http://file4.renrendoc.com/view2/M01/00/2C/wKhkFmaqJB2AS9P9AACt5qnCKBE8005.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第9章圖形繪制第9章
圖形繪制Tkinter概述畫布繪圖圖形的事件處理圖形繪制應(yīng)用舉例9.1Tkinter概述Tkinter是Python語言的標(biāo)準(zhǔn)GUI庫,常被用于快速開發(fā)小型圖形界面應(yīng)用程序。9.1.2使用Tkinter創(chuàng)建GUI程序的步驟(1)導(dǎo)入Tkinter模塊。importtkinter(導(dǎo)入tkinter模塊)importtkinterastk(導(dǎo)入tkinter模塊為tk)fromtkinterimport*(導(dǎo)入tkinter的所有內(nèi)容)(2)建立主窗口。 root=tkinter.Tk()
(5)綁定事件處理程序響應(yīng)用戶操作(如單擊按鈕)引發(fā)的
事件。(6)進(jìn)入事件循環(huán),等待用戶觸發(fā)事件響應(yīng)。root.mainiloop()(3)在主窗口中添加控件,如文本框、按鈕等。(4)調(diào)用控件的pack()、grid()、place()方法,通過幾何布局管理器調(diào)整并顯示其位置和大小。9.1.3Tkinter的主窗口Tkinter的主窗口也被稱為根窗體,是圖形化應(yīng)用程序的根容器,是Tkinter模塊底層控件的實例。在導(dǎo)入Tkinter模塊后,我們可以調(diào)用Tk()方法來初始化一個根窗體實例。window=Tk()例9-1
最簡單的GUI程序示例。(1)在Python程序中導(dǎo)入Tkinter模塊。(2)創(chuàng)建窗體對象。(3)啟動消息循環(huán)。fromtkinterimport*
frm_main=Tk()
frm_main.mainloop()2.裝飾界面屬性說明舉例title(str)窗口標(biāo)題,str表示參數(shù)類型為字符串title(‘?dāng)?shù)據(jù)分析’〕iconbitmap(str)窗口左上角程序圖標(biāo)iconbitmap(".\\pic\\SUN.ICO")geometry(‘寬x高距左右邊距上下邊’)窗體的幾何尺寸及在屏幕中的位置,其中x不能少,距左邊用+右邊用-,距上邊用+下邊用-geometry(‘800x500+100+50’)resizable(b,b)窗體尺寸的可變性,b表示邏輯型resizable(0,0)(高寬都不可變)9.1.4畫布對象的創(chuàng)建畫布(canvas)是用來繪制圖形的區(qū)域,所有tkinter模塊中的圖形操作都是在畫布上完成的。(1)創(chuàng)建一個畫布對象畫布對象名=Canvas(窗口對象名,屬性名=屬性值,...)畫布對象的常用屬性:高度(height)、寬度(width)、背景色(bg或background)等。c=Canvas(w,width=300,height=200,bg='white')(2)
顯示畫布對象c.pack()(3)
可對畫布的屬性進(jìn)行設(shè)置c['bg']='green'9.1.5畫布中的圖形對象各種圖形對象的共性操作1.圖形對象的標(biāo)識:采用標(biāo)識號和標(biāo)簽(tag)標(biāo)識號是在創(chuàng)建圖形對象時自動為其賦予的唯一整數(shù)編號。為圖形對象指定標(biāo)簽的三種方法:(1)在創(chuàng)建圖形時,利用tags屬性來指定標(biāo)簽。(2)創(chuàng)建圖形之后,可以利用畫布的itemconfig()方法對tags屬性進(jìn)行設(shè)置。(3)利用畫布的addtag_withtag()方法來為圖形對象添加新標(biāo)簽。例如:>>>id1=c.create_rectangle(10,10,100,50,tags="No1")>>>id2=c.create_rectangle(20,30,200,100,tags=("myRect","No2"))>>>c.itemconfig(id1,tags=("myRect","Rect1"))>>>c.addtag_withtag("ourRect","Rect1")注意:一個圖形對象可以與多個標(biāo)簽相關(guān)聯(lián),同樣一個標(biāo)簽可以與多個圖形對象相關(guān)聯(lián)。2.圖形對象的共性操作(1)gettags()方法:用于獲取給定圖形對象的所有標(biāo)簽。(2)find_withtag()方法:用于獲取與給定標(biāo)簽相關(guān)聯(lián)的所有圖形對象。(3)delete()方法:用于從畫布上刪除指定的圖形對象。(4)move()方法:用于在畫布上移動指定圖形。>>>print(c.gettags(id1))('myRect','Rect1','ourRect')>>>print(c.find_withtag("Rect1"))>>>c.delete(id1)>>>c.move(id2,10,20)9.2畫布繪圖9.2.1繪制矩形方法:create_rectangle()
格式:r=畫布對象名.create_rectangle(x0,y0,x1,y1,屬性設(shè)置……)其中,(x0,y0)是矩形左上角的坐標(biāo),(x1,y1)是矩形右下角的坐標(biāo)。屬性設(shè)置即對矩形的屬性進(jìn)行設(shè)置。r保存圖形的標(biāo)識號。>>>r=c.create_rectangle(80,70,250,180,tags="Rect2")2.矩形對象的常用屬性(1)矩形邊框?qū)傩詏utline屬性:通過outline屬性可以設(shè)置矩形的邊框顏色,默認(rèn)值為黑色。width屬性:通過width屬性可以設(shè)置邊框的寬度,默認(rèn)值為1像素。dash屬性:通過dash屬性可以繪制邊框成虛線形式,該屬性的值是整數(shù)元組。例如二元組(a,b),其中a表示要畫多少個像素,b表示要跳過多少個像素。(2)矩形內(nèi)部填充屬性fill屬性:通過fill屬性可以設(shè)置矩形內(nèi)部區(qū)域的填充顏色,默認(rèn)值為空字符串,即透明的效果。stipple屬性:在填充顏色時,可以使用stipple屬性設(shè)置填充畫刷,即填充的點刻效果,可以取gray12、gray25、gray50、gray75等值。state屬性:該屬性用于設(shè)置圖形的顯示狀態(tài),默認(rèn)值為NORMAL或normal,即正常顯示。9.2.2繪制橢圓與圓弧1.繪制橢圓畫布對象名.create_oval(x0,y0,x1,y1,屬性設(shè)置……)例9-3繪制如圖所示的圓和橢圓fromtkinterimport*w=Tk()w.title('繪制圓和橢圓')c=Canvas(w,width=260,height=260,bg='white')c.pack()c.create_oval(30,30,230,230,fill='black',width=2)c.create_oval(30,80,230,180,fill='green',width=2)c.create_oval(80,30,180,230,fill='white',width=2)2.繪制圓弧canvas.create_arc(x0,y0,x1,y1,屬性設(shè)置...)屬性start:定義弧形的開始位置,其值為一個角度(x軸方向為0o)。默認(rèn)值為0o。屬性extent:定義弧形的結(jié)束位置,其值表示從開始位置逆時針旋轉(zhuǎn)的角度。默認(rèn)值為90o。屬性style用于規(guī)定圓弧的樣式,可以取三種值:PIESLICE:扇形,即圓弧兩端與圓心相連,默認(rèn)值;ARC:弧,即圓周上的一段;CHORD:弓形,即弧加連接弧兩端的弦。fromtkinterimport*w=Tk()c=Canvas(w,width=350,height=200,bg="white")c.pack()c.create_arc(20,40,100,120,width=2)#默認(rèn)樣式是PIESLICEc.create_arc(120,40,200,120,style=CHORD,width=2)c.create_arc(220,40,300,120,style=ARC,width=2)例子:9.2.3顯示文本畫布對象名.create_text(x,y,屬性設(shè)置...)(x,y)指定文本顯示的參考位置text屬性:設(shè)置文本內(nèi)容,其值即為要顯示的字符串。anchor屬性:用于指定文本的哪個錨點與顯示位置(x,y)對齊。錨點可通過E(東)、S(南)、W(西)、N(北)、CENTER(中)、SE(東南)、SW(西南)、NW(西北)、NE(東北)等方位常量表示fill屬性用于設(shè)置文本的顏色,默認(rèn)值為黑色。justify屬性用于控制多行文本的對齊方式,其值可以是LEFT、CENTER或RIGHT,默認(rèn)為LEFT。font屬性指定文本字體。例9-4
畫布文本顯示示例。fromtkinterimport*w=Tk()w.title('文本顯示')c=Canvas(w,width=400,height=200,bg="white")c.pack()c.create_rectangle(200,100,201,101,width=8)c.create_text(200,100,text="HelloPython1",\font=("宋體",15,"normal"),anchor=SE)c.create_text(200,100,text="HelloPython2",\font=("宋體",15,"normal"),anchor=SW)c.create_text(200,100,text="HelloPython3",\font=("宋體",15,"normal"),anchor=NE)c.create_text(200,100,text="HelloPython4",\font=("宋體",15,"normal"),anchor=NW)9.3圖形的事件處理“事件”(event)指在程序執(zhí)行過程中發(fā)生的操作。例如單擊鼠標(biāo)左鍵、按下鍵盤上的某個鍵等。某個對象可以與特定事件綁定在一起,這樣當(dāng)特定事件發(fā)生時,可以調(diào)用特定的函數(shù)來處理該事件。1.事件綁定使用畫布對象的bind()方法或者tag_bind()方法。例如:
c.bind("<Button-1>",canvasF)將畫布對象與鼠標(biāo)左鍵單擊事件<Button-1>進(jìn)行了綁定。c.tag_bind(t,"<Enter>",textF1)將畫布上的文本對象t與鼠標(biāo)指針進(jìn)入事件<Enter>進(jìn)行了綁定。2.事件處理函數(shù)
對象與特定事件進(jìn)行綁定時,需告訴系統(tǒng)當(dāng)對象發(fā)生了指定的事件后該如何處理的函數(shù)。例如:canvasF()函數(shù)用于處理畫布上的鼠標(biāo)左鍵單擊事件。功能是改變文本t的內(nèi)容,如果當(dāng)前內(nèi)容是"Python!"就變成"Programming!",如果當(dāng)前是"Programming!"就變成"Python!"。3.主窗口事件循環(huán)語句:w.mainloop()作用:進(jìn)入主窗口的事件循環(huán)。系統(tǒng)會自動監(jiān)控在主窗口上發(fā)生的各種事件,并觸發(fā)相應(yīng)的處理函數(shù)。turtle(海龜)庫是turtle繪圖體系的Python實現(xiàn)
turtle繪圖體系:1969年誕生,主要用于程序設(shè)計入門Python語言的標(biāo)準(zhǔn)庫之一入門級的圖形繪制函數(shù)庫9.4turtle繪圖turtle的原理turtle(海龜)是一種真實的存在有一只海龜,其實在窗體正中心,在畫布上游走走過的軌跡形成了繪制的圖形海龜由程序控制,可以變換顏色、改變寬度等turtle.setup()函數(shù)格式:turtle.setup(width,height,startx,starty)作用:設(shè)置主窗體的大小和位置。width:窗口寬度height:窗口高度startx:窗口左側(cè)與屏幕左側(cè)的像素距離starty:窗口頂部與屏幕頂部的像素距離>>>turtle.setup(650,350,200,200)turtle的魅力#PythonDraw.pyimportturtleturtle.setup(650,350,200,200)turtle.penup()turtle.fd(-250)turtle.pendown()turtle.pensize(25)turtle.pencolor("purple")turtle.seth(-40)foriinrange(4):turtle.circle(40,80)turtle.circle(-40,80)turtle.circle(40,80/2)turtle.fd(40)turtle.circle(16,180)turtle.fd(40*2/3)turtle.done()1.導(dǎo)入turtle模塊使用turtle繪圖,首先需要導(dǎo)入turtle模塊,有以下兩種方法。>>>importturtle>>>fromturtleimport*importturtle函數(shù)調(diào)用時使用的語句格式是turtle.circle(10)fromturtleimport*函數(shù)調(diào)用時使用的語句格式是circle(10)importturtleast函數(shù)調(diào)用時使用的語句格式是t.circle(10)0102032.turtle繪圖屬性
turtle繪圖有三個要素,分別是位置、方向和畫筆。(1)位置是指箭頭在Turtle圖形窗口中的位置。(2)方向是指箭頭的指向,使用left(degree)、right(degree)函數(shù)使得箭頭分別向左、向右旋轉(zhuǎn)degree度。(3)畫筆是指繪制的線條的顏色和寬度。9.4.2畫筆控制函數(shù)1.turtle.penup()作用:抬起畫筆,之后移動畫筆不繪制形狀。2.turtle.pendown()函數(shù)作用:落下畫筆,之后移動畫筆將繪制形狀。3.turtle.pensize(width)函數(shù)作用:設(shè)置畫筆寬度,當(dāng)無參數(shù)輸入時返回當(dāng)前畫筆寬度。turtle.pensize(25)4.turtle.pencolor(colorstring)函數(shù)或turtle.pencolor((r,g,b))
作用:設(shè)置畫筆顏色,當(dāng)無參數(shù)輸入時返回當(dāng)前畫筆顏色。6.turtle.color(color1,color2)函數(shù)作用:同時設(shè)置pencolor=color1,fillcolor=color15.turtle.fillcolor(colorstring)函數(shù)作用:設(shè)置繪制圖形的填充顏色7.turtle.begin_fill()函數(shù)8.turtle.end_fill()函數(shù)作用:準(zhǔn)備開始填充圖形作用:填充完成9.4.3形狀繪制函數(shù)1.turtle.fd(distance)函數(shù)或turtle.forward(distance)作用:向小海龜當(dāng)前行進(jìn)方向前進(jìn)distance距離;distance為負(fù)數(shù)時表示向相反方向前進(jìn)。>>>turtle.fd(40)2.backward(d):與forward()函數(shù)相反,控制箭頭向后移動,其中d代表移動的距離。forward(d)backward(d)3.goto(x,y):將箭頭從當(dāng)前位置徑直移動到坐標(biāo)為(x,y)的位置,移動后方向也不改變。如果想要移動箭頭到(x,y)處理,但不要繪制圖形,可以使用up()函數(shù)。例如,下列命令繪制一根水平直線。fromturtleimport*reset()#將整個繪圖窗口清空并將箭頭置于原點(窗口的中心)goto(100,0)#當(dāng)前位置(0,0)運動到(100,0)位置importturtleturtle.goto(100,100)turtle.goto(100,-100)turtle.goto(-100,-100)turtle.goto(-100,100)turtle.goto(0,0)絕對角度4.turtle.seth(to_angle)函數(shù)或turtle.setheading(to_angle)作用:設(shè)置小海龜當(dāng)前行進(jìn)方向為to_angle,該角度是絕對方向角度值。只改變方向但不行進(jìn)。
>>>turtle.seth(-40)turtle角度坐標(biāo)體系turtle.seth(45)turtle.seth(-135)5.turtle.left(angle)函數(shù)作用:順時針移動angle度。該角度為相對角度。只改變方向不移動。6.turtle.right(angle)函數(shù)作用:逆時針移動angle度。該角度為相對角度。只改變方向不移動。Turtle角度坐標(biāo)體系importturtleturtle.left(45)turtle.fd(150)turtle.right(135)turtle.fd(300)turtle.left(135)turtle.fd(150)7.turtle.circle(radius,extent=None)函數(shù)作用:根據(jù)半徑radius繪制extent角度的弧形。radius:弧形半徑,當(dāng)值為正數(shù)時,半徑在小海龜左側(cè),
當(dāng)值為負(fù)數(shù)時,半徑在小海龜右側(cè)。extent:繪制弧形的角度,當(dāng)不設(shè)置參數(shù)或參數(shù)設(shè)置為None 時,繪制整個圓形。turtle.circle(100)turtle.circle(-100,90)例12-2繪制三個同心圓。程序如下:fromturtleimport*foriinrange(3):up()#提起畫筆goto(0,-50-i*50)#確定畫圓的起點down()#放下畫筆circle(50+i*50)#畫圓1、下列哪個選項能夠使用turtle庫繪制一個半圓形?(
)A.turtle.fd(100)B.turtle.circle(100)C.turtle.circle(100,90)D.turtle.circle(-100,180)2.turtle庫中控制顏色的函數(shù)是(
)。A.pensize()B.pendown()C.goto()D.pencolor()DD3、
下列程序運行后,得到的圖形是(
)。fromturtleimport*goto(100,100)A.水平直線B.垂直直線
C.斜線D.只移動坐標(biāo)不做圖4、turtle庫中控制順時針轉(zhuǎn)的函數(shù)是()。A.pendown()B.left()C.right()D.pencolor()CC例12-1繪制一個正方形。程序如下:fromturtleimport*color("blue")#定義繪制時畫筆的顏色pensize(5)#定義繪制時畫筆的線條寬度speed(10)#定義繪圖的速度foriinrange(4):#繪出正方形的四條邊f(xié)orward(100)right(90)使用turtle庫,繪制一個正方形。請完成以下程序。importturtleastt.pensize(3)foriinrange(4):t.fd(100)_______t.left(90)使用turtle庫,繪制一個疊邊形,其中,疊邊形內(nèi)角為100度。請完成以下程序。importturtleastt.pensize(2)foriinrange(9):t.fd(180)_______t.right(80)使用turtle庫,繪制一個六邊形。請完成以下程序。importturtleastt.pensize(3)for________:t.fd(100)t.left(60)iinrange(6)使用turtle庫,繪制一個邊長為40像素的十二邊形。請完成以下程序。importturtleturtle.pensize(2)d=0for______:turtle.fd(40)d+=30turtle.seth(d)iinrange(12)例
使用turtle庫,繪制一個六瓣花。程序如下:fromturtleimport*x=50foriinrange(6):circle(x,240)left(60)例12-5使用turtle庫繪制紅色五角形。程序如下:fromturtleimport*pencolor("red")goto(-100,50)pendown()color("red")begin_fill()foriinrange(5): forward(200) right(144)end_fill()
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 流量變送器項目可行性研究報告-圖文
- 搬遷申請書范文
- 2025年中國道路減速板市場供需現(xiàn)狀及投資戰(zhàn)略研究報告
- 賓館報停申請書
- 重點發(fā)展對象申請書
- 2025年丙烯酸快干磁漆行業(yè)深度研究分析報告
- 中國水泥管預(yù)制項目投資可行性研究報告
- 中國天然氣調(diào)壓柜行業(yè)發(fā)展運行現(xiàn)狀及投資潛力預(yù)測報告
- 中國汽車空壓機(jī)行業(yè)市場全景評估及投資潛力預(yù)測報告
- 投資建設(shè)液化石油氣項目可行性研究報告模板
- 2025年冷鏈物流產(chǎn)品配送及倉儲管理承包合同3篇
- 電鍍產(chǎn)業(yè)園項目可行性研究報告(專業(yè)經(jīng)典案例)
- 2025年魯泰集團(tuán)招聘170人高頻重點提升(共500題)附帶答案詳解
- 2024-2025學(xué)年成都高新區(qū)七上數(shù)學(xué)期末考試試卷【含答案】
- 企業(yè)員工食堂管理制度框架
- 【開題報告】中小學(xué)校鑄牢中華民族共同體意識教育研究
- 2024-2025學(xué)年云南省大理州七年級(上)期末英語試卷(含答案)
- SLT824-2024 水利工程建設(shè)項目文件收集與歸檔規(guī)范
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫含答案解析
- (完整word版)中國銀行交易流水明細(xì)清單模版
- DB43∕T 859-2014 高速公路機(jī)電工程概預(yù)算編制辦法及定額
評論
0/150
提交評論