python tkinter怎麼用canvas實現按順序畫圖

時間 2021-05-04 15:39:21

1樓:匿名使用者

python簡述:

python是一種解釋型、物件導向、動態資料型別的高階程式設計語言。自從20世紀90年代初python語言誕生至今,它逐漸被廣泛應用於處理系統管理任務和web程式設計。python[1]已經成為最受歡迎的程式設計語言之一。

2023年1月,它被tiobe程式語言排行榜評為2023年度語言。自從2023年以後,python的使用率是呈線性增長。

tkinter模組介紹

tkinter模組(「tk 介面」)是python的標準tk gui工具包的介面.tk和tkinter可以在大多數的unix平臺下使用,同樣可以應用在windows和macintosh系統裡.,tk8.

0的後續版本可以實現本地視窗風格,並良好地執行在絕大多數平臺中。

由於tkinter是內建到python的安裝包中、只要安裝好python之後就能import tkinter庫、而且idle也是用tkinter編寫而成、對於簡單的圖形介面tkinter還是能應付自如。

八、顯示文字

用create_text在畫布上寫字。這個函式只需要兩個座標(文字x和y的位置),還有一個具名引數來接受要顯示的文字。例如:

create_text函式還有幾個很有用的引數,比方說字型顏色等。在下面的**中,我們呼叫create_text函式時使用了座標(130,120),還有要顯示的文字,以及紅色的填充色:

我們還可以指定字型,方法是給出一個包含字型名和字型大小的元組。例如大小為20的times字型就是('times',20):

九、顯示**

要用tkinter在畫布上顯示**,首先要裝入**,然後使用canvas物件上的create_image函式。

這是我存在e盤上的一張**:

我們可以這樣來顯示one.gif**:

>>> from tkinter import*>>> tk = tk()>>> canvas = canvas(tk,width=400,height=400)>>> canvas.pack()>>> my_image = photoimage(file='e:\\ffoutput\\one.

gif')>>> canvas.create_image(0,0,anchor = nw,image = my_image) >>> canvas.create_image(50,50,anchor = nw,image = my_image)

在第五行中,把**裝入到變數my_image中。座標(0,0)/(50,50)是我們要顯示**的位置, anchor=nw讓函式使用左上角(northwest 西北方)作為畫圖的起始點,最後一個具名引數image指向裝入的**。

想要顯示其他型別的**,如png和jpg,需要用到其他的模組,比如python影象庫。

十、建立基本的動畫

建立一個填了色的三角形,讓它在螢幕上橫向移動:

import timefrom tkinter import*tk = tk()canvas = canvas(tk,width=400,height=200)canvas.pack()canvas.create_polygon(10,10,10,60,50,35) ##建立三角形for x in range(0,60):

canvas.move(1,5,0) ##把任意畫好的物件移動到把x和y座標增加給定值的位置 tk.update()   ##強制tkinter更新螢幕(重畫)   time.

sleep(0.05) ##讓程式休息二十分之一秒(0.05秒),然後再繼續

三角形橫向移動

延伸一下,如果想讓三角形沿對角線在螢幕上移動,我們可以第8行為:

import timefrom tkinter import*tk = tk()canvas = canvas(tk,width=400,height=400)canvas.pack()canvas.create_polygon(10,10,10,60,50,35) ##建立三角形for x in range(0,60):

canvas.move(1,5,5) ##把任意畫好的物件移動到把x和y座標增加給定值的位置 tk.update()   ##強制tkinter更新螢幕(重畫)   time.

sleep(0.05) ##讓程式休息二十分之一秒(0.05秒),然後再繼續

三角形沿對角線移動

如果要讓三角形在螢幕上沿對角線回到開始的位置,要用-5,-5(在結尾處加上這段**)

import timefrom tkinter import*tk = tk()canvas = canvas(tk,width=400,height=400)canvas.pack()canvas.create_polygon(10,10,10,60,50,35) ##建立三角形for x in range(0,60):

canvas.move(1,5,5) ##把任意畫好的物件移動到把x和y座標增加給定值的位置 tk.update()   ##強制tkinter更新螢幕(重畫)   time.

sleep(0.05) ##讓程式休息二十分之一秒(0.05秒),然後再繼續for x in range(0,60):

canvas.move(1,-5,-5)  tk.update()     time.

sleep(0.05)

對角線運動並回到初始位置

十一、讓物件對操作有反應

我們可以用「訊息繫結」來讓三角形在有人按下某鍵時有反應。

要開始處理事件,我們首先要建立一個函式。當我們告訴tkinter將某個特定函式綁到(或關聯到)某個特定事件上時就完成了繫結。

換句話說,tkinter會自動呼叫這個函式來處理事件。

例如,要讓三角形在按下回車鍵時移動,我們可以定義這個函式:

def move********(event): canvas.move(1,5,0)

這個函式只接受一個引數(event),tkinter用它來給函式傳遞關於事件的資訊。現在我們用畫布canvas上的bind_all函式來告訴tkinter當特定事件發生時應該呼叫這個函式。**如下:

from tkinter import*tk = tk()canvas = canvas(tk,width=400,height=400)canvas.pack()canvas.create_polygon(10,10,10,60,50,35)def move********(event):

canvas.move(1,5,0)canvas.bind_all('',movetringle) ##讓tkinter監視keypress事件,當該事件發生時呼叫move********函式

那麼我們如何根據按鍵的不同而改變三角形的方向呢?比如用方向鍵。

我們可以嘗試改下move********函式:

def move********(event): if event.keysym == 'up':

 canvas.move(1,0,-3) ##第一個引數使畫布上所畫的形狀的id數字,第二個是對x(水平方向)座標增加的值,第三個是對y(垂直方向)座標增加的值 elif event.keysym == 'down':

 canvas.move(1,0,3) elif event.keysym == 'left':

 canvas.move(1,-3,0) else  canvas.move(1,3,0)

最後**彙總在一起為:

from tkinter import*tk = tk()canvas = canvas(tk,width=400,height=400)canvas.pack()canvas.create_polygon(10,10,10,60,50,35)def move********(event):

if event.keysym == 'up':  canvas.

move(1,0,-3) ##第一個引數使畫布上所畫的形狀的id數字,第二個是對x(水平方向)座標增加的值,第三個是對y(垂直方向)座標增加的值 elif event.keysym == 'down':  canvas.

move(1,0,3) elif event.keysym == 'left':  canvas.

move(1,-3,0) else:  canvas.move(1,3,0)canvas.

bind_all('',move********) ##讓tkinter監視keypress事件,當該事件發生時呼叫move********函式canvas.bind_all('',move********)canvas.bind_all('',move********)canvas.

bind_all('',move********)

方向鍵控制三角形的移動

十二、更多使用id的方法

只要用了畫布上面以create_開頭的函式,它總會返回一個id。這個函式可以在其他的函式中使用。

如果我們修改**來把返回值作為一個變數儲存,然後使用這個變數,那麼無論返回值是多少,這段**都能工作:

>>> my******** = canvas.create_polygon(10,10,10,60,50,35)>>> canvas.move(my********,5,0)

我們可以用itemconfig來改變三角形的顏色,這需要把id作為第一個引數:

>>> canvas.itemconfig(mytrigle,fill='bue') ##把id為變數my********中的值的物件的填充顏色改為藍色

也可以給三角形一條不同顏色的輪廓線,同樣適用id作為第一個引數:

>>> canvas.itemconfig(mytrigle,outline='red')

總結做出了簡單的動畫。學會了如何用事件繫結來讓圖形響應按鍵,這在寫計算機遊戲時很有用。在tkinter中以create開頭的函式是如何返回一個id數字。

已經學習python兩天,最開始是想著是通過覺得用它寫個動畫或者畫個圖形比較方便,而且介面美觀,比黑洞洞的dos視窗好多了,準備寫個程式送個一女孩作為生日禮物(去年答應好的)。經過這兩天的學習,我慢慢發覺了python語言的優點,其最主要的就是易學,而且可以呼叫各種庫。

龍眼怎麼施肥?怎麼種?怎麼吃,龍眼怎麼施肥?怎麼種?怎麼吃?

中國的西南部至東南部栽培很廣,以廣東最盛,福建次之 雲南及廣西南部亦見野生或半野生於疏林中。亞洲南部和東南部也常有栽培。龍眼是中國南部和東南部著名果樹之一,常與荔枝相提並論。龍眼含豐富的葡萄糖 蔗糖和蛋白質等,含鐵量也比較高,可提高熱能 補充營養 怎麼吃你都不會就不要談種了 龍眼要怎樣進行施肥? 中...

字怎麼讀,怎麼組詞,怎麼造句,兩字怎麼組詞怎麼造句

放縱的煙型 ru,溫文儒雅,數學老師溫文儒雅,學生們都很喜歡聽他教課 哈哈。 愛學習的陽光 讀作ru二聲 組詞 大儒,儒家文化 造句 在中國古代,儒家文化備受推崇。 日 吳 儒 儒雅,形容學識深湛,形容氣度溫文爾雅。儒教,道教,佛教,教。 ru,儒家,他是儒家學說的支持者 字怎麼讀,怎麼組詞,怎麼造...

棉花怎麼採摘怎麼處理,棉花 怎麼採摘 怎麼處理

1 適時採收bai棉花,若採摘過早,棉花du纖維尚未充分成熟,產量和品質降低 採摘zhi過晚,棉dao絮經風吹日晒,會降低纖維拉力,色澤受到汙染,也會降低棉花質量。2 防止雨淋 成熟的棉絮遇雨後,棉殼 棉葉的色素都會汙染棉花,使潔白的棉花出現陰紅 陰黃 灰白的斑點等。如果遇到連陰雨,還會造成黴爛變質...