Python語言程序設(shè)計(jì)第12章--圖形繪制-配源代碼課件_第1頁
Python語言程序設(shè)計(jì)第12章--圖形繪制-配源代碼課件_第2頁
Python語言程序設(shè)計(jì)第12章--圖形繪制-配源代碼課件_第3頁
Python語言程序設(shè)計(jì)第12章--圖形繪制-配源代碼課件_第4頁
Python語言程序設(shè)計(jì)第12章--圖形繪制-配源代碼課件_第5頁
已閱讀5頁,還剩99頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 Python語言程序設(shè)計(jì)語言程序設(shè)計(jì)劉劉衛(wèi)國衛(wèi)國第第12章章 圖形圖形繪制繪制配源代碼配源代碼12.1.1 tkinter模塊模塊導(dǎo)導(dǎo)入入tkinter模塊一般采用以下兩種方法。模塊一般采用以下兩種方法。 import tkinter from tkinter import *12.1 Tkinter圖形庫概述圖形庫概述12.1.2 主窗口的主窗口的創(chuàng)建創(chuàng)建主主窗口也稱為根窗口,這是一個頂層窗口,窗口也稱為根窗口,這是一個頂層窗口,所有圖形都是在這個窗口中繪制的。其創(chuàng)建格所有圖形都是在這個窗口中繪制的。其創(chuàng)建格式為:式為:窗口窗口對象名對象名=Tk()例如例如,下列語句創(chuàng)建主窗口,下列語句創(chuàng)

2、建主窗口w。 w=Tk()12.1.3 畫布對象的創(chuàng)建畫布對象的創(chuàng)建畫布畫布(canvas)就是用來進(jìn)行繪圖的區(qū)域,)就是用來進(jìn)行繪圖的區(qū)域,實(shí)際上是一個對象,可以在畫布上繪制各種圖形、實(shí)際上是一個對象,可以在畫布上繪制各種圖形、標(biāo)注文本。創(chuàng)建畫布對象語句的格式如下:標(biāo)注文本。創(chuàng)建畫布對象語句的格式如下:畫布對象名畫布對象名=Canvas(窗口對象名窗口對象名,屬性名屬性名=屬性屬性值值,)該該語句創(chuàng)建一個畫布對象,并對該對象的屬語句創(chuàng)建一個畫布對象,并對該對象的屬性進(jìn)行設(shè)置。語句中的性進(jìn)行設(shè)置。語句中的Canvas代表代表tkinter模塊模塊提供的提供的Canvas類,通過類,通過Canv

3、as類的構(gòu)造函數(shù)類的構(gòu)造函數(shù)Canvas()創(chuàng)建畫布對象。創(chuàng)建畫布對象。“窗口對象名窗口對象名”表示畫表示畫布所在的布所在的窗口,窗口,“屬性名屬性名=屬性值屬性值”用于設(shè)置畫用于設(shè)置畫布對象的布對象的屬性。屬性。下面的語句在主窗口下面的語句在主窗口w中創(chuàng)建一個寬度為中創(chuàng)建一個寬度為300像素、高度為像素、高度為200像素、背景為白色的畫布像素、背景為白色的畫布對象,并將畫布對象命名為對象,并將畫布對象命名為c。 c=Canvas(w,width=300,height=200,bg=white)注意,雖然已經(jīng)創(chuàng)建了畫布對象注意,雖然已經(jīng)創(chuàng)建了畫布對象c,但在主,但在主窗口中并沒有看到這塊白色畫

4、布。為了讓畫布在窗口中并沒有看到這塊白色畫布。為了讓畫布在窗口中顯現(xiàn)出來,還需要執(zhí)行如下語句。窗口中顯現(xiàn)出來,還需要執(zhí)行如下語句。 c.pack()其中其中c表示畫布對象,表示畫布對象,pack()是是畫布對象的畫布對象的一個方法,這時在屏幕上看到原來的一個方法,這時在屏幕上看到原來的主窗口中放主窗口中放進(jìn)一個進(jìn)一個300200的白色畫布。的白色畫布。12.1.4 畫布對象的畫布對象的坐標(biāo)系坐標(biāo)系tkinter模塊為畫布建立了坐標(biāo)系。畫布坐模塊為畫布建立了坐標(biāo)系。畫布坐標(biāo)系以畫布左上角為原點(diǎn),從原點(diǎn)水平向右為標(biāo)系以畫布左上角為原點(diǎn),從原點(diǎn)水平向右為x軸,從原點(diǎn)垂直向下為軸,從原點(diǎn)垂直向下為y軸

5、。軸。畫布坐標(biāo)系畫布坐標(biāo)系12.1.5 畫布中的圖形對象畫布中的圖形對象1圖形對象的標(biāo)識圖形對象的標(biāo)識畫布中的圖形對象需要采用某種方法來標(biāo)識畫布中的圖形對象需要采用某種方法來標(biāo)識和引用,以便對該圖形對象進(jìn)行處理,具體采用和引用,以便對該圖形對象進(jìn)行處理,具體采用標(biāo)識號和標(biāo)簽(標(biāo)識號和標(biāo)簽(tag)兩種標(biāo)識方法。)兩種標(biāo)識方法。標(biāo)識號是創(chuàng)建圖形對象時自動為圖形對象賦標(biāo)識號是創(chuàng)建圖形對象時自動為圖形對象賦予的唯一的整數(shù)編號。標(biāo)簽相當(dāng)于給圖形對象命予的唯一的整數(shù)編號。標(biāo)簽相當(dāng)于給圖形對象命名,一個圖形對象可以與多個標(biāo)簽相關(guān)聯(lián),而同名,一個圖形對象可以與多個標(biāo)簽相關(guān)聯(lián),而同一個標(biāo)簽可以與多個圖形對象相

6、關(guān)聯(lián),一個標(biāo)簽可以與多個圖形對象相關(guān)聯(lián),即一個圖即一個圖形對象可以有多個名字,而且不同形對象可以有多個名字,而且不同圖形對象可以圖形對象可以有相同的名字。有相同的名字。為圖形對象指定標(biāo)簽有三種方法。為圖形對象指定標(biāo)簽有三種方法。(1)在創(chuàng)建圖形時利用)在創(chuàng)建圖形時利用tags屬性來指定標(biāo)簽,屬性來指定標(biāo)簽,可以將可以將tags屬性設(shè)置為單個字符串,即單個名屬性設(shè)置為單個字符串,即單個名字,也可以設(shè)置為一個字符串元組,即多個名字,也可以設(shè)置為一個字符串元組,即多個名字。字。(2)在創(chuàng)建圖形之后,可以利用畫布的)在創(chuàng)建圖形之后,可以利用畫布的itemconfig()方法對方法對tags屬性進(jìn)行設(shè)置

7、。屬性進(jìn)行設(shè)置。(3)利用畫布的)利用畫布的addtag_withtag()方法來為圖方法來為圖形對象添加新標(biāo)簽。形對象添加新標(biāo)簽。2圖形對象的共性操作圖形對象的共性操作(1)gettags()方法:用于獲取給定圖形對象的方法:用于獲取給定圖形對象的所有標(biāo)簽。所有標(biāo)簽。(2)find_withtag()方法:用于獲取與給定標(biāo)簽方法:用于獲取與給定標(biāo)簽相關(guān)聯(lián)的所有圖形對象。相關(guān)聯(lián)的所有圖形對象。(3)delete()方法:用于從畫布上刪除指定的方法:用于從畫布上刪除指定的圖形對象。圖形對象。(4)move()方法:用于在畫布上移動方法:用于在畫布上移動指定圖形。指定圖形。繪制繪制圖形前,先要導(dǎo)入

8、圖形前,先要導(dǎo)入tkinter模塊、創(chuàng)建主模塊、創(chuàng)建主窗口、創(chuàng)建畫布并使畫布可見。相關(guān)的語句匯總窗口、創(chuàng)建畫布并使畫布可見。相關(guān)的語句匯總?cè)缦隆H缦?。from tkinter import *w=Tk()c=Canvas(w,width=300,height=200,bg=white)c.pack()12.2 畫布繪圖畫布繪圖12.2.1 繪制矩形繪制矩形1create_rectangle()方法方法畫布畫布對象提供對象提供create_rectangle()方法,用方法,用于在畫布上創(chuàng)建矩形,其調(diào)用格式如下:于在畫布上創(chuàng)建矩形,其調(diào)用格式如下:畫布對象名畫布對象名.create_rectan

9、gle(x0,y0,x1,y1,屬屬性設(shè)置性設(shè)置)其中其中,(,(x0,y0)是矩形左上角的坐標(biāo),)是矩形左上角的坐標(biāo),(x1,y1)是矩形右下角的坐標(biāo)。屬性設(shè)置即對矩是矩形右下角的坐標(biāo)。屬性設(shè)置即對矩形的屬性進(jìn)行設(shè)置。形的屬性進(jìn)行設(shè)置。例如,下面的語句創(chuàng)建一個以(例如,下面的語句創(chuàng)建一個以(50,50)為左)為左上角、以(上角、以(200,100)為右下角的矩形。)為右下角的矩形。 c.create_rectangle(50,30,200,150)下面的語句再創(chuàng)建一個矩形,并將矩形標(biāo)識號下面的語句再創(chuàng)建一個矩形,并將矩形標(biāo)識號存入變量存入變量r中。中。 r=c.create_rectangl

10、e(80,70,250,180,tags=Rect2) r22矩形對象的常用屬性矩形對象的常用屬性(1)矩形邊框?qū)傩裕┚匦芜吙驅(qū)傩詏utline屬性。矩形邊框可以用屬性。矩形邊框可以用outline屬性來屬性來設(shè)置顏色,其默認(rèn)值為黑色。如果將設(shè)置顏色,其默認(rèn)值為黑色。如果將outline設(shè)設(shè)置為空串,則不顯示邊框,即透明的邊框。置為空串,則不顯示邊框,即透明的邊框。width屬性。邊框的寬度可以用屬性。邊框的寬度可以用width屬性來屬性來設(shè)置,默認(rèn)值為設(shè)置,默認(rèn)值為1像素。像素。dash屬性。邊框可以畫成虛線形式,這需要屬性。邊框可以畫成虛線形式,這需要用到用到dash屬性,該屬性的值是整數(shù)

11、元組。屬性,該屬性的值是整數(shù)元組。最常最常用用的是二元組的是二元組(a,b),其中,其中a指定要畫指定要畫多少個像素,多少個像素,b指定要跳過多少個像素,如此重復(fù),指定要跳過多少個像素,如此重復(fù),直至邊框直至邊框畫畫完。若完。若a、b相等,可以簡記為(相等,可以簡記為(a,)。)。(2)矩形內(nèi)部填充屬性)矩形內(nèi)部填充屬性fill屬性。矩形內(nèi)部區(qū)域可以用屬性。矩形內(nèi)部區(qū)域可以用fill屬性來設(shè)置屬性來設(shè)置填充顏色,此屬性的默認(rèn)值是空串,效果是內(nèi)部填充顏色,此屬性的默認(rèn)值是空串,效果是內(nèi)部透明。透明。stipple屬性。在填充顏色時,可以使用屬性。在填充顏色時,可以使用stipple屬性設(shè)置填充畫

12、刷,即填充的點(diǎn)刻效果,屬性設(shè)置填充畫刷,即填充的點(diǎn)刻效果,可以取可以取gray12、gray25、gray50、gray75等值。等值。(3)其他屬性)其他屬性矩形還有個屬性矩形還有個屬性state,用于設(shè)置圖形的顯,用于設(shè)置圖形的顯示狀態(tài)。默認(rèn)值是示狀態(tài)。默認(rèn)值是NORMAL或或normal,即正常,即正常顯示。另一個有用的值是顯示。另一個有用的值是HIDDEN或或hidden,它使矩形在畫布上不可見。使一個圖形在它使矩形在畫布上不可見。使一個圖形在NORMAL和和HIDDEN兩個狀態(tài)之間交替變化,兩個狀態(tài)之間交替變化,即形成閃爍的效果。注意,屬性值用大寫字母即形成閃爍的效果。注意,屬性值用

13、大寫字母形式時,不要加引號,而用小寫字母形式時,形式時,不要加引號,而用小寫字母形式時,一定要加引號,下面還有這種情況,一定要加引號,下面還有這種情況,到時只列到時只列出出大寫字母形式。大寫字母形式。例例12-1 繪制圖繪制圖12-7所示的四個正方形所示的四個正方形。圖圖12-7 繪制四個繪制四個正方形正方形分析分析:利用畫布的:利用畫布的create_rectangle()方法繪方法繪制制正方形,注意設(shè)置屬性和四個正方形正方形,注意設(shè)置屬性和四個正方形之間的之間的位位置關(guān)系。置關(guān)系。tcost)3(sintytsint)3(costx例例12-2 繪制曲線繪制曲線分析分析:繪制函數(shù)曲線可采用

14、計(jì)算出函數(shù)曲線的各個點(diǎn)的:繪制函數(shù)曲線可采用計(jì)算出函數(shù)曲線的各個點(diǎn)的坐標(biāo),將各點(diǎn)畫出來,如果這些點(diǎn)足夠密,坐標(biāo),將各點(diǎn)畫出來,如果這些點(diǎn)足夠密,繪出的曲線會繪出的曲線會比較光滑。畫布對角沒有提供畫比較光滑。畫布對角沒有提供畫“點(diǎn)點(diǎn)”的方法,但可以畫的方法,但可以畫一個很小的矩形來當(dāng)作點(diǎn)。一個很小的矩形來當(dāng)作點(diǎn)。,t0,10。12.2.2 繪制橢圓與圓弧繪制橢圓與圓弧1繪制橢圓繪制橢圓畫布畫布對象提供對象提供create_oval()方法,用于在畫布上方法,用于在畫布上畫一個橢圓,其特例是圓。橢圓的位置和尺寸通過其外畫一個橢圓,其特例是圓。橢圓的位置和尺寸通過其外接矩形決定,而外接矩形由左上角坐

15、標(biāo)(接矩形決定,而外接矩形由左上角坐標(biāo)(x0,y0)和右)和右下角坐標(biāo)(下角坐標(biāo)(x1,y1)定義)定義。create_oval()方法的調(diào)用格式如下:方法的調(diào)用格式如下:畫布對象名畫布對象名.create_oval(x0,y0,x1,y1,屬性屬性設(shè)置設(shè)置)create_oval()的返回值是所創(chuàng)建橢圓的標(biāo)的返回值是所創(chuàng)建橢圓的標(biāo)識號,可以將標(biāo)識號存入變量。識號,可以將標(biāo)識號存入變量。和矩形類似,橢圓的常用屬性包括和矩形類似,橢圓的常用屬性包括outline、width、dash、fill、state和和tags等。畫布對等。畫布對象的象的itemconfig()方法、方法、delete()

16、方法和方法和move()方法同樣可用于橢圓的屬性設(shè)置、刪除和移動方法同樣可用于橢圓的屬性設(shè)置、刪除和移動。例例12-3 創(chuàng)建圖創(chuàng)建圖12-10所示的圓和橢圓。所示的圓和橢圓。圖圖12-10 繪制圓和橢圓繪制圓和橢圓分析:利用畫布的分析:利用畫布的create_oval方法繪制方法繪制一個圓一個圓和兩個橢圓,注意設(shè)置屬性和三個圖形和兩個橢圓,注意設(shè)置屬性和三個圖形之間的之間的位置關(guān)系。位置關(guān)系。例例12-4 描繪地球繞太陽旋轉(zhuǎn)的軌道。描繪地球繞太陽旋轉(zhuǎn)的軌道。分析:分別創(chuàng)建一個橢圓和兩個圓,并且為大圓分析:分別創(chuàng)建一個橢圓和兩個圓,并且為大圓形涂上紅色表示太陽,為小圓形涂上藍(lán)色表示地形涂上紅色表

17、示太陽,為小圓形涂上藍(lán)色表示地球球。2繪制圓弧繪制圓弧畫布對象提供畫布對象提供create_arc()方法,用于在方法,用于在畫布上創(chuàng)建一個弧形。與橢圓的繪制類似,畫布上創(chuàng)建一個弧形。與橢圓的繪制類似,create_arc()的參數(shù)是用來定義一個矩形的左的參數(shù)是用來定義一個矩形的左上角和右下角的坐標(biāo),該矩形唯一確定了一個上角和右下角的坐標(biāo),該矩形唯一確定了一個內(nèi)接橢圓(特例是圓),而最終要畫的弧形是內(nèi)接橢圓(特例是圓),而最終要畫的弧形是該橢圓的一段。該橢圓的一段。create_arc()方法的調(diào)用格式如下:方法的調(diào)用格式如下:畫布對象名畫布對象名.create_arc(x0,y0,x1,y1

18、,屬性屬性設(shè)設(shè)置置)create_arc()的返回值是所創(chuàng)建的返回值是所創(chuàng)建的圓弧的的圓弧的標(biāo)識號標(biāo)識號,可以將標(biāo)識號存入變量。,可以將標(biāo)識號存入變量?;⌒蔚拈_始位置由屬性弧形的開始位置由屬性start定義,其值為定義,其值為一個角度(一個角度(x軸方向?yàn)檩S方向?yàn)?);弧形的結(jié)束位置由);弧形的結(jié)束位置由屬性屬性extent定義,其值表示從開始位置逆時針旋定義,其值表示從開始位置逆時針旋轉(zhuǎn)的角度。轉(zhuǎn)的角度。start屬性的默認(rèn)值為屬性的默認(rèn)值為0,extent屬性屬性的默認(rèn)值為的默認(rèn)值為90。顯然,如果。顯然,如果start設(shè)置為設(shè)置為0,extent設(shè)置為設(shè)置為360,則畫出一個完整的橢圓,

19、效,則畫出一個完整的橢圓,效果和果和create_oval()方法一樣。方法一樣。屬性屬性style用于規(guī)定圓弧的樣式,可以取三用于規(guī)定圓弧的樣式,可以取三種值:種值:PIESLICE是扇形,即圓弧兩端與圓心相連;是扇形,即圓弧兩端與圓心相連;ARC是弧,即圓周上的一段;是弧,即圓周上的一段;CHORD是弓形,是弓形,即即弧加連接弧兩端的弦?;〖舆B接弧兩端的弦。Style的默認(rèn)值的默認(rèn)值是是PIESLICE。from tkinter import *w=Tk()c=Canvas(w,width=350,height=150,bg=white)c.pack()c.create_arc(20,40

20、,100,120,width=2) #默認(rèn)樣默認(rèn)樣式是式是PIESLICEc.create_arc(120,40,200,120,style=CHORD,width=2)c.create_arc(220,40,300,120,style=ARC,width=2)弧形的其他常用屬性弧形的其他常用屬性outline、width、dash、fill、state和和tags的意義和默認(rèn)值都和的意義和默認(rèn)值都和矩形類似。注意只有矩形類似。注意只有PIESLICE和和CHORD形狀形狀才可填充顏色才可填充顏色。畫布畫布對象的對象的itemconfig()方法、方法、delete()方法、和方法、和move

21、()辦法同樣可用于弧形的屬性設(shè)置、刪除和移動。辦法同樣可用于弧形的屬性設(shè)置、刪除和移動。例例12-5 創(chuàng)建圖創(chuàng)建圖12-13所示的扇葉圖形所示的扇葉圖形。12.2.3 繪制線條與多邊形繪制線條與多邊形1繪制線條繪制線條畫布畫布對象提供對象提供create_line()方法,用于在畫方法,用于在畫布上創(chuàng)建連接多個點(diǎn)的線段序列,其調(diào)用格式如布上創(chuàng)建連接多個點(diǎn)的線段序列,其調(diào)用格式如下:下:畫布對象名畫布對象名.create_line(x0,y0,x1,y1,,xn,yn,屬性設(shè)置屬性設(shè)置)create_line()方法將各點(diǎn)(方法將各點(diǎn)(x0,y0),),(x1,y1),,(,(xn,yn)按順序

22、用線條連接起來,)按順序用線條連接起來,返回值是所創(chuàng)建的線條的標(biāo)識號,返回值是所創(chuàng)建的線條的標(biāo)識號,可以將標(biāo)識號可以將標(biāo)識號存入變量。存入變量。沒有沒有特別說明的話,相鄰兩點(diǎn)間用直接連特別說明的話,相鄰兩點(diǎn)間用直接連接,即圖形整體上是一條折線。但如果將屬性接,即圖形整體上是一條折線。但如果將屬性smooth設(shè)置成非設(shè)置成非0值,則各點(diǎn)被解釋成值,則各點(diǎn)被解釋成B樣條曲樣條曲線的頂點(diǎn),圖形整體是一條平滑的曲線。線的頂點(diǎn),圖形整體是一條平滑的曲線。線條線條不能形成邊框和內(nèi)部區(qū)域兩部分,因不能形成邊框和內(nèi)部區(qū)域兩部分,因此沒有此沒有outline屬性,只有屬性,只有fill屬性,表示線條的屬性,表示

23、線條的顏色,其默認(rèn)值為黑色。顏色,其默認(rèn)值為黑色。線條可以通過屬性線條可以通過屬性arrow來設(shè)置箭頭,該屬來設(shè)置箭頭,該屬性的默認(rèn)值是性的默認(rèn)值是NONE(無箭頭)。如果將(無箭頭)。如果將arrow設(shè)置為設(shè)置為FIRST,則箭頭在,則箭頭在(x0,y0)兩端;設(shè)置為兩端;設(shè)置為LAST,則箭頭在(,則箭頭在(xn,yn)端;設(shè)置為)端;設(shè)置為BOTH,則兩端都有箭頭。則兩端都有箭頭。屬性屬性arrowshape用于描述箭頭形狀,其值用于描述箭頭形狀,其值為三元組(為三元組(d1,d2,d3),含義如圖所示。默認(rèn)),含義如圖所示。默認(rèn)值為(值為(8,10,3)。和和前面介紹的各種圖形一樣,線

24、條還具前面介紹的各種圖形一樣,線條還具有有width、dash、state、tags等屬性。畫布等屬性。畫布對象的對象的itemconfig()方法、方法、delete()方法和方法和move()方法同樣可用于線條的屬性設(shè)置、刪方法同樣可用于線條的屬性設(shè)置、刪除和移動。除和移動。例例12-6 繪制繪制y=sin x sin(4x)曲線。曲線。2繪制多邊形繪制多邊形畫布畫布對象提供對象提供create_polygon()方法,用于方法,用于在畫布上創(chuàng)建一個多邊形。在畫布上創(chuàng)建一個多邊形。create_polygon()方方法的調(diào)用格式如下:法的調(diào)用格式如下:畫布對象名畫布對象名.create_p

25、olygon(x0,y0,x1,y1,,屬性設(shè)置屬性設(shè)置)create_polygon()的返回值是創(chuàng)建多邊形的的返回值是創(chuàng)建多邊形的標(biāo)識號,可以將標(biāo)識號存入一個變量。標(biāo)識號,可以將標(biāo)識號存入一個變量。和和矩形類似,矩形類似,outline和和fill分別設(shè)置多邊形分別設(shè)置多邊形的邊框顏色和內(nèi)部填充色,但與矩形的邊框顏色和內(nèi)部填充色,但與矩形不同的是,不同的是,多邊形的多邊形的outline屬性默認(rèn)值為空串,屬性默認(rèn)值為空串,即邊框不即邊框不可見,而可見,而fill屬性的默認(rèn)值為黑色屬性的默認(rèn)值為黑色。與線條類似,一般用直線連接頂點(diǎn),但如與線條類似,一般用直線連接頂點(diǎn),但如果將屬性果將屬性sm

26、ooth設(shè)置成非設(shè)置成非0值,則表示用值,則表示用B樣條樣條曲線連接頂點(diǎn),這樣繪制的是由平滑曲線圍成曲線連接頂點(diǎn),這樣繪制的是由平滑曲線圍成的圖形。的圖形。多邊形的另幾個常用屬性多邊形的另幾個常用屬性width、dash、state和和tags的用法都和矩形類似。畫布對象的的用法都和矩形類似。畫布對象的itemconfig()方法、方法、delete()方法和方法和move()方法方法同樣可用于多邊形的屬性設(shè)置、刪除和移動。同樣可用于多邊形的屬性設(shè)置、刪除和移動。例例12-7 用紅、黃、綠三種顏色填充矩形用紅、黃、綠三種顏色填充矩形。圖圖12-16 三種顏色填充的矩形三種顏色填充的矩形分析:先

27、畫矩形,再用紅、黃、綠三種分析:先畫矩形,再用紅、黃、綠三種顏色分別顏色分別繪制三角形、平行四邊形和三角形,繪制三角形、平行四邊形和三角形,三個圖形連三個圖形連在一起填充矩形。在一起填充矩形。12.2.4 顯示文本與圖像顯示文本與圖像1顯示文本顯示文本畫布畫布對象提供對象提供create_text()方法,用于在畫方法,用于在畫布上顯示一行或多行文本。與普通的字符串不同布上顯示一行或多行文本。與普通的字符串不同,這里的文本被當(dāng)作圖形對象。這里的文本被當(dāng)作圖形對象。create_text()方法的調(diào)用格式如下:方法的調(diào)用格式如下:畫布畫布對象名對象名.create_text(x,y,屬性設(shè)置屬性

28、設(shè)置)其中其中(x,y)指定文本顯示的參考位置)指定文本顯示的參考位置。create_text()的返回值是所創(chuàng)造的文本的的返回值是所創(chuàng)造的文本的標(biāo)識號,標(biāo)識號,可以將標(biāo)識號存入變量中??梢詫?biāo)識號存入變量中。文本文本內(nèi)容由內(nèi)容由text屬性設(shè)置,其值就是要顯示屬性設(shè)置,其值就是要顯示的字符串。字符串中可以使用換行字符的字符串。字符串中可以使用換行字符“n”,從,從而實(shí)現(xiàn)多行文本的顯示。而實(shí)現(xiàn)多行文本的顯示。anchor屬性用于指定文本的哪個錨點(diǎn)與顯示屬性用于指定文本的哪個錨點(diǎn)與顯示位置位置(x,y)對齊,通過錨點(diǎn)可以控制文本的相對位對齊,通過錨點(diǎn)可以控制文本的相對位置,例如,若將置,例如,若

29、將anchor設(shè)置為設(shè)置為N,則將文本邊界,則將文本邊界框的頂邊中點(diǎn)置于參考點(diǎn)(框的頂邊中點(diǎn)置于參考點(diǎn)(x,y)。pfill屬性用于設(shè)置文本的顏色,默認(rèn)值為黑色。屬性用于設(shè)置文本的顏色,默認(rèn)值為黑色。如果設(shè)置為空串,則文本不可見。如果設(shè)置為空串,則文本不可見。justify屬性用屬性用于控制多行文本的對齊方式,其值為于控制多行文本的對齊方式,其值為LEFT、CENTER或或RIGHT,默認(rèn)值為,默認(rèn)值為LEFT。pwidth屬性用于控制文本的寬度,超出寬度就要屬性用于控制文本的寬度,超出寬度就要換行。換行。pFont屬性指定文本字體。字體描述使用一個三屬性指定文本字體。字體描述使用一個三元組,

30、包含字體名稱、大小和字形名稱,例如元組,包含字體名稱、大小和字形名稱,例如(Times New Roman,10,bold)表示)表示10號號加黑新羅馬字,(加黑新羅馬字,(宋體宋體,12,italic)表示)表示12號號斜體斜體宋體。宋體。pstate屬性、屬性、tags屬性的意義與其他圖形屬性的意義與其他圖形對象相對象相同同。畫布畫布對象的對象的itemcget()和和intemconfig()方方法可用于讀取或修改文本的內(nèi)容,畫布對象的法可用于讀取或修改文本的內(nèi)容,畫布對象的delete()方法、方法、move()方法可用于文本的刪除方法可用于文本的刪除和移動。和移動。例例12-8 畫布

31、文本顯示示例畫布文本顯示示例。2顯示圖像顯示圖像tkinter模塊針對不同格式的圖像文件有不同模塊針對不同格式的圖像文件有不同的顯示方法,這里只介紹顯示的顯示方法,這里只介紹顯示gif格式圖像的方法。格式圖像的方法。具體步驟如下。具體步驟如下。(1)利用)利用tkinter模塊提供的模塊提供的PhotoImage類來創(chuàng)類來創(chuàng)建圖像對象,語句格式如下:建圖像對象,語句格式如下:圖形對象圖形對象=PhotoImage(file=圖像文件名圖像文件名)其中,屬性其中,屬性file用于指定圖像文件(支持用于指定圖像文件(支持gif、png、bmp、pgm、ppm等格式),等格式),PhotoImage

32、()返返回值是一個圖像對象,可以用變量來引用回值是一個圖像對象,可以用變量來引用這個對這個對象。象。(2)通過畫布對象提供的)通過畫布對象提供的create_image()方法方法在在畫布畫布上顯示圖像,方法的調(diào)用格上顯示圖像,方法的調(diào)用格式如下式如下:畫布畫布對象名對象名.create_image(x,y,image=圖像對象圖像對象,屬性設(shè)置屬性設(shè)置)其中其中,(x,y)是決定圖像顯示位置的參考點(diǎn)是決定圖像顯示位置的參考點(diǎn)。create_image()方法的返回值是所創(chuàng)建的圖像在方法的返回值是所創(chuàng)建的圖像在畫布上的標(biāo)識號,可以將標(biāo)識號存入一個變量中。畫布上的標(biāo)識號,可以將標(biāo)識號存入一個變量

33、中。圖像在畫布上的位置由參考點(diǎn)(圖像在畫布上的位置由參考點(diǎn)(x,y)和)和anchor屬性決定,具體設(shè)置與文本相同??梢詫傩詻Q定,具體設(shè)置與文本相同。可以為圖像設(shè)置屬性為圖像設(shè)置屬性state、tags,意義與其他圖形,意義與其他圖形對象相同。畫布對象的對象相同。畫布對象的delete()方法、方法、move()方法同樣可用于圖像的刪除和移動。方法同樣可用于圖像的刪除和移動。例例12-9 假設(shè)有圖像文件假設(shè)有圖像文件e:mypythonpython.png,將該圖像顯示在,將該圖像顯示在畫布中。畫布中。12.3 圖形的事件處理圖形的事件處理畫布畫布及畫布上的圖形都是對象,都可以與操作及畫布上的

34、圖形都是對象,都可以與操作事件綁定,這樣用戶可以利用鍵盤、鼠標(biāo)來操作、事件綁定,這樣用戶可以利用鍵盤、鼠標(biāo)來操作、控制畫布和圖形。控制畫布和圖形。例例12-10 在畫布輪換交替顯示兩行文本,鼠標(biāo)左在畫布輪換交替顯示兩行文本,鼠標(biāo)左鍵單擊文本時替換一次,右鍵單擊文本時隱藏文本鍵單擊文本時替換一次,右鍵單擊文本時隱藏文本,鼠標(biāo)指針指向文本時使文本隨機(jī)移動,鼠標(biāo)指針指向文本時使文本隨機(jī)移動。12.4.1 turtle繪圖繪圖1導(dǎo)入導(dǎo)入turtle模塊模塊使用使用turtle繪圖,首先需要導(dǎo)入繪圖,首先需要導(dǎo)入turtle模塊,模塊,有以下兩種方法。有以下兩種方法。 import turtle fro

35、m turtle import *12.4 turtle繪圖與繪圖與Graphics圖形庫圖形庫2turtle繪圖屬性繪圖屬性turtle繪圖有三個要素,分別是位置、方向繪圖有三個要素,分別是位置、方向和畫筆。和畫筆。(1)位置是指箭頭在)位置是指箭頭在Turtle 圖形窗口中的位置。圖形窗口中的位置。(2)方向是指箭頭的指向,使用)方向是指箭頭的指向,使用left(degree)、right(degree)函數(shù)使得箭頭分別向左、向右旋函數(shù)使得箭頭分別向左、向右旋轉(zhuǎn)轉(zhuǎn)degree度。度。(3)畫筆是指繪制的線條的顏色和寬度。)畫筆是指繪制的線條的顏色和寬度。有關(guān)畫筆控制函數(shù)如下。有關(guān)畫筆控制函

36、數(shù)如下。down():放下畫筆,移動時繪制圖形。這也:放下畫筆,移動時繪制圖形。這也是默認(rèn)的狀態(tài)。是默認(rèn)的狀態(tài)。up():提起畫筆,移動時不繪制圖形。:提起畫筆,移動時不繪制圖形。pensize(w)或或width(w):繪制圖形時畫筆的:繪制圖形時畫筆的寬度,寬度,w為一個正數(shù)。為一個正數(shù)。pencolor(s)或或color(s):繪制圖形時畫筆的顏:繪制圖形時畫筆的顏色,色,s是一個字符串,例如是一個字符串,例如red、blue、green分別表示紅色、藍(lán)色、綠色。分別表示紅色、藍(lán)色、綠色。fillcolor(s):繪制圖形的填充顏色。:繪制圖形的填充顏色。3turtle繪圖命令繪圖命令

37、turtle繪圖有著許多控制箭頭運(yùn)動的命令,繪圖有著許多控制箭頭運(yùn)動的命令,從而繪制出各種圖形。從而繪制出各種圖形。goto(x,y):將箭頭從當(dāng)前位置徑直移動到坐標(biāo):將箭頭從當(dāng)前位置徑直移動到坐標(biāo)為(為(x,y)的位置,這時當(dāng)前方向不起作用,移)的位置,這時當(dāng)前方向不起作用,移動后方向也不改變。如果想要移動箭頭到(動后方向也不改變。如果想要移動箭頭到(x,y)處理,但不要繪制圖形,可以使用處理,但不要繪制圖形,可以使用up()函數(shù)。例函數(shù)。例如,下列命令繪制一根水平直線。如,下列命令繪制一根水平直線。from turtle import *reset() #將整個繪圖窗口清空并將箭頭置于原點(diǎn)

38、將整個繪圖窗口清空并將箭頭置于原點(diǎn)(窗口的中心)。(窗口的中心)。goto(100,0) #當(dāng)前位置(當(dāng)前位置(0,0)運(yùn)動到運(yùn)動到(100,0)位置位置forward(d):控制箭頭向前移動,其中:控制箭頭向前移動,其中d代表代表移動的距離。在移動前,需要設(shè)置箭頭的位置、移動的距離。在移動前,需要設(shè)置箭頭的位置、方向和畫筆三個屬性。方向和畫筆三個屬性。backward(d):與:與forward()函數(shù)相反,控制函數(shù)相反,控制箭頭向后移動,其中箭頭向后移動,其中d代表移動的距離。代表移動的距離。speed(v):控制箭頭移動的速度,:控制箭頭移動的速度,v取取0,10范圍的整數(shù),數(shù)字越大,速

39、度越快。也可以范圍的整數(shù),數(shù)字越大,速度越快。也可以使用使用slow、fast來控制速度。來控制速度。例例12-11 繪制一個正方形。繪制一個正方形。程序如下:程序如下:from turtle import *color(blue) #定義繪制時畫筆的顏色定義繪制時畫筆的顏色pensize(5) #定義繪制時畫筆的線條寬度定義繪制時畫筆的線條寬度speed(10) #定義繪圖的速度定義繪圖的速度for i in range(4): #繪出正方形的四條邊繪出正方形的四條邊 forward(100) right(90)在在設(shè)置了繪圖狀態(tài)之后,控制箭頭前進(jìn)設(shè)置了繪圖狀態(tài)之后,控制箭頭前進(jìn)(forwa

40、rd)一段距離,右轉(zhuǎn)()一段距離,右轉(zhuǎn)(right)90度,度,重重復(fù)四次即可。復(fù)四次即可。turtle模塊還有一些內(nèi)置函數(shù),例如畫圓的模塊還有一些內(nèi)置函數(shù),例如畫圓的函數(shù)函數(shù)circle(r),該函數(shù)以箭頭當(dāng)前位置為圓的底,該函數(shù)以箭頭當(dāng)前位置為圓的底部坐標(biāo),以部坐標(biāo),以r為半徑畫圓。為半徑畫圓。例例12-12 繪制三個同心圓。繪制三個同心圓。程序如下:程序如下:from turtle import *for i in range(3): up() #提起畫筆提起畫筆 goto(0,-50-i*50) #確定畫圓的起點(diǎn)確定畫圓的起點(diǎn) down() #放下畫筆放下畫筆 circle(50+i*

41、50) #畫圓畫圓12.4.2 Graphics圖形庫圖形庫1模塊導(dǎo)入與圖形窗口模塊導(dǎo)入與圖形窗口graphics模塊文件(模塊文件(graphics.py)可以從網(wǎng))可以從網(wǎng)站站/zelle/python下下載,下載后將載,下載后將graphics.py文件與用戶自己的圖形文件與用戶自己的圖形程序放在一個目錄中,或者放在程序放在一個目錄中,或者放在Python安裝目錄安裝目錄中即可。中即可。使用使用graphics繪圖,首先要導(dǎo)入繪圖,首先要導(dǎo)入graphics模模塊,語句格式有如下兩種。塊,語句格式有如下兩種。 import graphics

42、from graphics import *其次其次,使用,使用graphics提供的提供的GraphWin()函函數(shù)創(chuàng)建一個圖形窗口。在圖形窗口中,設(shè)有標(biāo)題數(shù)創(chuàng)建一個圖形窗口。在圖形窗口中,設(shè)有標(biāo)題欄,以及最小化、最大化、關(guān)閉等按鈕。例如:欄,以及最小化、最大化、關(guān)閉等按鈕。例如: win=GraphWin()GraphWin()函數(shù)在屏幕上創(chuàng)建了函數(shù)在屏幕上創(chuàng)建了一個圖形一個圖形窗口窗口。graphics圖形窗口也有各種屬性,在調(diào)用圖形窗口也有各種屬性,在調(diào)用GraphWin()函數(shù)時可以提供各種參數(shù)。例如:函數(shù)時可以提供各種參數(shù)。例如: win=GraphWin(My Graphics

43、Window,300,200)這這條語句的含義是在屏幕上創(chuàng)建一個窗口對條語句的含義是在屏幕上創(chuàng)建一個窗口對象,窗口標(biāo)題為象,窗口標(biāo)題為“My Graphics Window”,寬,寬度為度為300像素,高度為像素,高度為200像素。像素。窗口窗口操作結(jié)束后應(yīng)該關(guān)閉圖形窗口,關(guān)閉窗操作結(jié)束后應(yīng)該關(guān)閉圖形窗口,關(guān)閉窗口的函數(shù)調(diào)用方法為:口的函數(shù)調(diào)用方法為: win.close()2圖形對象圖形對象在在graphics模塊中,提供了模塊中,提供了GraphWin(圖形窗口)、(圖形窗口)、Point(點(diǎn))、(點(diǎn))、Line(直線)、(直線)、Circle(圓)、(圓)、Oval(橢圓)、(橢圓)、R

44、ectangle(矩(矩形)、形)、Polygon(多邊形)、(多邊形)、Text(文本)等(文本)等類,利用類可以創(chuàng)建相應(yīng)的圖形對象。每個對類,利用類可以創(chuàng)建相應(yīng)的圖形對象。每個對象都是相應(yīng)的類的實(shí)例,對象都具有自己的屬象都是相應(yīng)的類的實(shí)例,對象都具有自己的屬性和方法(操作)。性和方法(操作)。(1)點(diǎn))點(diǎn)graphics模塊提供了模塊提供了point類,用于在窗口中畫類,用于在窗口中畫點(diǎn)。創(chuàng)建點(diǎn)對象的語句格式為:點(diǎn)。創(chuàng)建點(diǎn)對象的語句格式為:p=Point(x坐標(biāo)坐標(biāo),y坐標(biāo)坐標(biāo)) from graphics import * win=GraphWin() p=Point(100,50) p

45、.draw(win) print(p.getX(),p.getY()100 50 p.move(20,30) print(p.getX(),p.getY()120 80此外,此外,Point對象還提供以下方法。對象還提供以下方法。pp.setFill():設(shè)置點(diǎn):設(shè)置點(diǎn)p的顏色。的顏色。pp.setOutline():設(shè)置邊框的顏色。對:設(shè)置邊框的顏色。對Point對象來說,與對象來說,與setFill()方法沒有區(qū)別。方法沒有區(qū)別。pp.undraw():隨藏對象:隨藏對象p,即在圖形窗口中,即在圖形窗口中對象對象p變成不可見。注意,隱藏并非刪除,對變成不可見。注意,隱藏并非刪除,對象象p仍

46、然存在,隨時可以重新執(zhí)行仍然存在,隨時可以重新執(zhí)行draw()。pp.clone():復(fù)制一個與:復(fù)制一個與p一模一樣的對象。一模一樣的對象。除了除了用字符串指定顏色之外,用字符串指定顏色之外,graphics模模塊還提供了塊還提供了color_rgb(r,g,b)函數(shù)來設(shè)置顏色,函數(shù)來設(shè)置顏色,其中的其中的r,g,b參數(shù)取參數(shù)取0255之間的整數(shù),分之間的整數(shù),分別表示紅色、綠色、藍(lán)色的數(shù)值,別表示紅色、綠色、藍(lán)色的數(shù)值,color_rgb()函數(shù)表示的顏色就是三種顏色混合以后的顏色。函數(shù)表示的顏色就是三種顏色混合以后的顏色。例如例如color_rgb(255,0,0)表示亮紅色,表示亮紅色

47、,color_rgb(0,255,0)表示亮綠色。表示亮綠色。(2)直線)直線直線直線類類Line用于繪制直線。創(chuàng)建直線對象用于繪制直線。創(chuàng)建直線對象的語句格式為:的語句格式為:line=Line(端點(diǎn)端點(diǎn)1,端點(diǎn)端點(diǎn)2)其中其中,兩個端點(diǎn)都是,兩個端點(diǎn)都是Point對象。對象。和和Point對象一樣,對象一樣,Line對象也支持對象也支持draw()、undraw()、move()、setFill()、setOutline()、clone()等方法。此外,等方法。此外,Line對象還支持對象還支持setArrow()方法,用于為直線畫箭方法,用于為直線畫箭頭頭,setWidth()方法用于設(shè)

48、置方法用于設(shè)置直線寬度。直線寬度。例例12-13 利用直線對象繪制一個正方形利用直線對象繪制一個正方形。(3)圓)圓圓圓類為類為Circle,創(chuàng)建圓形對象的語句格式,創(chuàng)建圓形對象的語句格式為:為:c=Circle(圓心圓心,半徑半徑)其中其中,圓心是,圓心是Point對象,半徑是個數(shù)值。對象,半徑是個數(shù)值。Circle對象同樣支持對象同樣支持draw()、undraw()、setFill()、setOutline、clone()、setWidth()等方法。此外,等方法。此外,Circle對象還支持對象還支持c.getRadius()方法,用于獲取圓形對象方法,用于獲取圓形對象c的半徑。的半徑

49、。例例12-14 繪制三個同心圓,并且將它們填充不繪制三個同心圓,并且將它們填充不同顏色同顏色。(4)橢圓)橢圓橢圓橢圓類為類為Oval,創(chuàng)建橢圓對象的語句格式,創(chuàng)建橢圓對象的語句格式為:為:o=Oval(左上角左上角,右下角右下角)其中其中,左上角和右下角是兩個,左上角和右下角是兩個Point對象,對象,用于指定一個矩形,再由這個矩形定義一個內(nèi)用于指定一個矩形,再由這個矩形定義一個內(nèi)接橢圓。橢圓對象同樣支持接橢圓。橢圓對象同樣支持draw()、undraw()、move()、setFill()、setOutline()、clone()、setWidth()等方法。等方法。例例12-15 繪制

50、四個相扣的圓,并且將它們繪制四個相扣的圓,并且將它們的邊線設(shè)置成不同顏色,邊線寬度相同。的邊線設(shè)置成不同顏色,邊線寬度相同。(5)矩形)矩形矩形矩形類為類為Rectangle,創(chuàng)建矩形對象的語句,創(chuàng)建矩形對象的語句格式為:格式為:r=Rectangle(左上角左上角,右下角右下角)其中其中,左上角和右下角是兩個,左上角和右下角是兩個Point對象,對象,用于指定矩形。用于指定矩形。矩形矩形對象同樣支持對象同樣支持draw()、undraw()、move()、setFill()、setOutline()、clone()、setWidth()等方法。此外,矩形還支持的等方法。此外,矩形還支持的方法

51、有方法有r.getP1()、r.getP2和和r.getCenter(),分別,分別用于獲用于獲取取左上角、右下角和中心坐標(biāo),返回值都是左上角、右下角和中心坐標(biāo),返回值都是Point對象。對象。例例12-16 繪制圖繪制圖12-25所示的正弦曲線圖形所示的正弦曲線圖形。(6)多邊形)多邊形多邊形多邊形類為類為Polygon,創(chuàng)建多邊形對象的語,創(chuàng)建多邊形對象的語句格式為:句格式為:p=Polygon(頂點(diǎn)頂點(diǎn)1,頂點(diǎn)頂點(diǎn)n)將將各頂點(diǎn)用直線相連,即成多邊形。各頂點(diǎn)用直線相連,即成多邊形。多邊形多邊形對象同樣支持對象同樣支持draw()、undraw()、move()、setFill()、set

52、Outline()、clone()、setWidth()等方法。此外還支持方法等方法。此外還支持方法poly.getPoints(),用于獲取多邊形的,用于獲取多邊形的各個頂點(diǎn)各個頂點(diǎn)坐標(biāo)坐標(biāo)。例例12-17 繪制紅色的正五邊形。繪制紅色的正五邊形。(7)文本)文本文本文本類為類為Text,創(chuàng)建文本對象的語句格,創(chuàng)建文本對象的語句格式為:式為:t=Text(中心點(diǎn)中心點(diǎn),字符串字符串)其中其中,中心點(diǎn)是個,中心點(diǎn)是個Point對象,字符串對象,字符串是顯示的文本內(nèi)容。是顯示的文本內(nèi)容。文本文本對象支持許多方法。對象支持許多方法。例例12-18 文本格式示例。文本格式示例。3交互式圖形操作交互式

53、圖形操作graphics模塊提供了兩個簡單的方法獲得模塊提供了兩個簡單的方法獲得用戶在圖形界面窗口中的操作事件。用戶在圖形界面窗口中的操作事件。(1)捕捉鼠標(biāo)單擊事件)捕捉鼠標(biāo)單擊事件可以可以通過通過GraphWin類中的類中的getMouse()方方法獲得用戶在窗口內(nèi)單擊鼠標(biāo)的信息。當(dāng)法獲得用戶在窗口內(nèi)單擊鼠標(biāo)的信息。當(dāng)getMouse()方法被一個方法被一個GraphWin對象調(diào)用,對象調(diào)用,程序?qū)⑼V共⒌却脩粼诖翱趦?nèi)單擊鼠標(biāo)。用程序?qū)⑼V共⒌却脩粼诖翱趦?nèi)單擊鼠標(biāo)。用戶單擊鼠標(biāo)的位置以戶單擊鼠標(biāo)的位置以Point對象作為返回值對象作為返回值返回返回給給程序。程序??聪旅娴目聪旅娴某绦虺?/p>

54、序from graphics import *win=GraphWin()p=win.getMouse()print(p.getX(),p.getY()getMouse()的返回值是一個的返回值是一個Point對象,對象,使用該對象的使用該對象的getX()和和getY()方法可以得到單擊方法可以得到單擊鼠標(biāo)的坐標(biāo)。鼠標(biāo)的坐標(biāo)。例例12-19 在窗口單擊鼠標(biāo)時繪制一個綠色的正在窗口單擊鼠標(biāo)時繪制一個綠色的正方形。方形。(2)處理文本輸入)處理文本輸入graphics模塊還包括一個輸入對象模塊還包括一個輸入對象Entry,用于獲取窗口中的鍵盤輸入事件。用于獲取窗口中的鍵盤輸入事件。Entry對象

55、對象在圖形窗口中創(chuàng)建一個文本框,它與在圖形窗口中創(chuàng)建一個文本框,它與Text對象對象類似,也使用類似,也使用setText()和和getText()方法。不同方法。不同之處在于之處在于Entry對象的內(nèi)容可以被用戶修改。對象的內(nèi)容可以被用戶修改。結(jié)合下面的溫度轉(zhuǎn)換程序說明其用法。結(jié)合下面的溫度轉(zhuǎn)換程序說明其用法。例例12-20 創(chuàng)建一個圖形窗口,其中有一個輸入框,創(chuàng)建一個圖形窗口,其中有一個輸入框,用于輸入攝氏溫度值,同時提供一個用于輸入攝氏溫度值,同時提供一個“溫度轉(zhuǎn)換溫度轉(zhuǎn)換”按鈕,單擊按鈕時能夠?qū)z氏溫度轉(zhuǎn)換為華氏溫度,按鈕,單擊按鈕時能夠?qū)z氏溫度轉(zhuǎn)換為華氏溫度,同時同時“溫度轉(zhuǎn)換溫度

56、轉(zhuǎn)換”變?yōu)樽優(yōu)椤巴顺鐾顺觥卑粹o,單擊按鈕退按鈕,單擊按鈕退出圖形窗口出圖形窗口。12.5 圖形應(yīng)用舉例圖形應(yīng)用舉例12.5.1 驗(yàn)證驗(yàn)證Fibonacci數(shù)列的性質(zhì)數(shù)列的性質(zhì)例例12-21 取取n=8,用圖解法驗(yàn)證,用圖解法驗(yàn)證Fibonacci數(shù)數(shù)列的性質(zhì):列的性質(zhì):f12+f22+f32+f82=f8f912.5.2 統(tǒng)計(jì)圖表統(tǒng)計(jì)圖表例例12-22按百分制輸入學(xué)生考試成績(輸入負(fù)按百分制輸入學(xué)生考試成績(輸入負(fù)數(shù)時結(jié)束輸入),統(tǒng)計(jì)各等級分?jǐn)?shù)的人數(shù)(成績數(shù)時結(jié)束輸入),統(tǒng)計(jì)各等級分?jǐn)?shù)的人數(shù)(成績90為優(yōu)秀,成績?yōu)閮?yōu)秀,成績80但但90為良好,成績?yōu)榱己?,成?0但但80為中等,成績?yōu)橹械?,?/p>

57、績60但但70為及格,成績?yōu)榧案瘢煽?0為不及格),并用餅圖來直觀地給出各等級為不及格),并用餅圖來直觀地給出各等級人數(shù)的比例人數(shù)的比例。12.5.3 分形曲線分形曲線例例12-23利用利用turtle繪圖繪制科赫曲線繪圖繪制科赫曲線??坪涨€科赫曲線科赫雪花曲線科赫雪花曲線12.5.4 利用動畫模擬天體運(yùn)動利用動畫模擬天體運(yùn)動例例12-24 利用動畫演示太陽、地球和月球三個利用動畫演示太陽、地球和月球三個天體之間的運(yùn)動情況,即月球繞地球運(yùn)動,并且天體之間的運(yùn)動情況,即月球繞地球運(yùn)動,并且和地球一起繞太陽運(yùn)動。地球繞太陽運(yùn)動和地球一起繞太陽運(yùn)動。地球繞太陽運(yùn)動10圈圈后暫停后暫停。配套源代碼

58、例12-1 程序如下:from tkinter import *w=Tk() #創(chuàng)建主窗口w.title(繪制四個正方形)c=Canvas(w,width=300,height=220,bg=white) #創(chuàng)建畫布對象c.pack() #使畫布可見c.create_rectangle(110,110,190,190,fill=green, outline=green,width=5) #繪制無邊框綠色正方形c.create_rectangle(110,30,190,110,fill=#ff0000, stipple=gray25) #繪制紅色點(diǎn)畫正方形c.create_rectangle(3

59、0,110,110,190,fill=yellow, outline=red,width=5) #繪制紅色邊框黃色正方形c.create_rectangle(190,110,270,190,dash=10,width=5, fill=red) #繪制虛線邊框紅色正方形配套源代碼例12-2 程序如下:from math import *from tkinter import *w=Tk()w.title(繪制曲線)c=Canvas(w,width=300,height=200,bg=white)c.pack()#繪制函數(shù)曲線t=0while t=10*pi: x=3*(cos(t)+t*sin(

60、t) y=3*(sin(t)-t*cos(t) x+=150 #移動坐標(biāo) y+=100 c.create_rectangle(x,y,x+0.5,y+0.5) t+=0.1配套源代碼例12-3 程序如下:from tkinter import *w=Tk()w.title(繪制圓和橢圓)c=Canvas(w,width=260,height=260,bg=white) #創(chuàng)建畫布對象c.pack()c.create_oval(30,30,230,230,fill=red,width=2) #繪制紅色圓c.create_oval(30,80,230,180,fill=yellow,width=2

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論