python簡述:
Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。自從20世紀90年代初Python語言誕生至今,它逐漸被廣泛應用于處理系統管理任務和Web編程。Python[1]已經成為最受歡迎的程序設計語言之一。2011年1月,它被TIOBE編程語言排行榜評為2010年度語言。自從2004年以后,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的位置),還有一個具名參數來接受要顯示的文字。例如:
1
|
>>> from tkinter import * >>> tk = Tk()>>> canvas = Canvas(tk,width = 400 ,height = 400 )>>> canvas.pack()>>> canvas.create_text( 150 , 100 ,text = 'Happy birthday to you' ) |
create_text函數還有幾個很有用的參數,比方說字體顏色等。在下面的代碼中,我們調用create_text函數時使用了坐標(130,120),還有要顯示的文字,以及紅色的填充色:
1
|
canvas.create_text( 130 , 120 ,text = 'Happy birthday to you!' ,fill = 'red' ) |
我們還可以指定字體,方法是給出一個包含字體名和字體大小的元組。例如大小為20的Times字體就是('Times',20):
1
|
>>> canvas.create_text( 150 , 150 ,text = 'Happy birthday' ,font = ( 'Times' , 15 ))>>> canvas.create_text( 200 , 200 ,text = 'Happy birthday' ,font = ( 'Courier' , 22 ))>>> canvas.create_text( 220 , 300 ,text = 'Happy birthday' ,font = ( 'Couried' , 30 )) |
九、顯示圖片
要用tkinter在畫布上顯示圖片,首先要裝入圖片,然后使用canvas對象上的create_image函數。
這是我存在E盤上的一張圖片:
我們可以這樣來顯示one.gif圖片:
1
|
>>> 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指向裝入的圖片。
注:用tkinter只能裝入GIF圖片,也就是擴展名是.gif的圖片文件。
想要顯示其他類型的圖片,如PNG和JPG,需要用到其他的模塊,比如Python圖像庫。
十、創建基本的動畫
創建一個填了色的三角形,讓它在屏幕上橫向移動:
1
|
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行為:
1
|
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(在結尾處加上這段代碼)
1
|
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會自動調用這個函數來處理事件。
例如,要讓三角形在按下回車鍵時移動,我們可以定義這個函數:
1
|
def movetriangle(event): canvas.move( 1 , 5 , 0 ) |
這個函數只接受一個參數(event),tkinter用它來給函數傳遞關于事件的信息。現在我們用畫布canvas上的bind_all函數來告訴tkinter當特定事件發生時應該調用這個函數。代碼如下:
1
|
from tkinter import * tk = Tk()canvas = Canvas(tk,width = 400 ,height = 400 )canvas.pack()canvas.create_polygon( 10 , 10 , 10 , 60 , 50 , 35 ) def movetriangle(event): canvas.move( 1 , 5 , 0 )canvas.bind_all( '<KeyPress-Return>' ,movetringle) ##讓tkinter監視KeyPress事件,當該事件發生時調用movetriangle函數 |
那么我們如何根據按鍵的不同而改變三角形的方向呢?比如用方向鍵。
我們可以嘗試改下movetriangle函數:
1
|
def movetriangle(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) |
最后代碼匯總在一起為:
1
|
from tkinter import * tk = Tk()canvas = Canvas(tk,width = 400 ,height = 400 )canvas.pack()canvas.create_polygon( 10 , 10 , 10 , 60 , 50 , 35 ) def movetriangle(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('<KeyPress-Up>',movetriangle) ##讓tkinter監視KeyPress事件,當該事件發生時調用movetriangle函數canvas.bind_all('<KeyPress-Down>',movetriangle)canvas.bind_all('<KeyPress-Left>',movetriangle)canvas.bind_all('<KeyPress-Right>',movetriangle) |
方向鍵控制三角形的移動
十二、更多使用ID的方法
只要用了畫布上面以create_開頭的函數,它總會返回一個ID。這個函數可以在其他的函數中使用。
如果我們修改代碼來把返回值作為一個變量保存,然后使用這個變量,那么無論返回值是多少,這段代碼都能工作:
1
|
>>> mytriangle = canvas.create_polygon( 10 , 10 , 10 , 60 , 50 , 35 )>>> canvas.move(mytriangle, 5 , 0 ) |
我們可以用itemconfig來改變三角形的顏色,這需要把ID作為第一個參數:
1
|
>>> canvas.itemconfig(mytrigle,fill = 'bue' ) ##把ID為變量mytriangle中的值的對象的填充顏色改為藍色 |
也可以給三角形一條不同顏色的輪廓線,同樣適用ID作為第一個參數:
1
|
>>> canvas.itemconfig(mytrigle,outline = 'red' ) |
總結做出了簡單的動畫。學會了如何用事件綁定來讓圖形響應按鍵,這在寫計算機游戲時很有用。在tkinter中以create開頭的函數是如何返回一個ID數字。
已經學習Python兩天,最開始是想著是通過覺得用它寫個動畫或者畫個圖形比較方便,而且界面美觀,比黑洞洞的dos窗口好多了,準備寫個程序送個一女孩作為生日禮物(去年答應好的)。經過這兩天的學習,我慢慢發覺了Python語言的優點,其最主要的就是易學,而且可以調用各種庫。
以上所述是小編給大家介紹的使用Python中的tkinter模塊作圖的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://www.cnblogs.com/OctoptusLian/archive/2017/02/06/6371206.html