Canvas ,中文意為畫布,在Tkinter模組中對應的是一片矩形區域,提供使用者繪圖的空間,可以把圖形、文字、橢圓或按鈕等組件放在畫布上,也可以進行圖案的繪畫、
在使用Canvas元件之前我們要先來學習它對應的螢幕座標系。
計算機中的影像我們一般會用像素來作單位,每個像素會有2個值,我們在Canvas元件中,對應的視窗左上方的座標為(0,0),也就是說在平面直角座標系中對應的x軸和y軸皆為0,視窗右下角的座標為距離x軸和Y軸的兩個最大值,如圖:
我們在Canvas畫布中放置組件的時候,一定要確保組件座標的正確。
Canvas的語法結構為:
my_canvas=Canvas(父類別,可選項)
父類即為我們放置的上一層窗口名,可選項有bd、bg、continue、cursor、height、width、highlightcolor、relief、scrollregion等,這些選項在前面都有介紹,在這裡就不作過多的講解。
Canves元件繪製圖形的方法有多種,分別有create_line、create_rectangle、create_oval、create_arc、create_polygon,我們將在下面進行一一介紹。
文法格式如下:
canvas.create_line(x1,y1,x2,y2,...,xn,yn,options)
我們可以透過這個方法在畫布上的兩個或n個點之間畫出一條直線,前兩個座標(x1,y1)即為起始點,(xn,yn)為終點。
程式碼如下:
importtkinterclassTK:def__init__(self):self.window=tkinter.Tk()self.canvas=tkinter.Canvas(self.window,width=300,height=300,bg='pink')self.canvas.create_line(30, 30,100,200,200,200,300,200,300,300)self.canvas.pack()tkinter.mainloop()m=TK()
效果如圖:
我們選取的座標為(30,30)->(100,200)->(200,200)->(300,300),根據上面的座標我們畫出上圖。
建立矩形的語法格式為:
canvas.create_rectangle(x1,y1,x2,y2,可選項)
矩形只需要2個座標即可確定,因此我們只需要左上角和右下角的座標(x1,y1)和(x2,y2),程式碼如下:
importtkinterclassTK:def__init__(self):self.window=tkinter.Tk()self.canvas=tkinter.Canvas(self.window,width=300,height=300,bg='pink')self.canvas.create_rectangle(100,10,000,100,00,create_rectangle(100,1020,0,102,00,102,00,102 self.canvas.pack()tkinter.mainloop()m=TK()
運作如圖:
文法格式如下:
canvas.create.oval(x1,y1,x2,y2,可選項)
四個座標對應的位置如圖:
文法格式如下:
canvas.create_arc(x1,y1,x2,y2,start=angle,extent=width,可選項)
其中,座標對應的和上圖橢圓對應的一致,start中的值對應的是弧形的起始角度,extent是對應的是弧形逆時針角度範圍。
程式碼如下:
importtkinterclassTK:def__init__(self):self.window=tkinter.Tk()self.canvas=tkinter.Canvas(self.window,width=300,height=300,bg='pink')self.canvas.create_arc(60, 60,220,220,start=0,extent=120,fill='blue')self.canvas.pack()tkinter.mainloop()m=TK()
運作如圖:
文法格式如下:
canvas.create_polygon(x1,y1,x2,y2,.....xn,yn,可選項)
每個座標對應一個位置,第一個為第一個頂點,依序鏈接,最後一個座標自動關閉多邊形。
程式碼如下:
importtkinterclassTK:def__init__(self):self.window=tkinter.Tk()self.canvas=tkinter.Canvas(self.window,width=300,height=300,bg='pink')self.canvas.create_polygon(150, 0,200,100,300,100,200,185,280,280,150,230,20,280,100,185,0,100,100,100,fill='red')self.canvas.pack(kir)m.
運行圖如下:
大家可以透過座標的改變去畫出自己想要畫出的圖形,可選的參數還有dash、outline、sommth和width。
我們可以透過canvas去繪畫出各式各樣的圖案,當然它也其他的功能,在下一節的例題中我們還會使用到它。