Python 3 – Tkinter 畫布
在Tkinter中,Canvas是一個(gè)很有用的組件,可以用于在窗口中繪制圖形、圖像或文本。愛掏網(wǎng) - it200.comCanvas對(duì)象是一個(gè)矩形區(qū)域,可以通過添加或刪除繪圖對(duì)象(例如圖形、文本或位圖)來編輯它。愛掏網(wǎng) - it200.com
下面的示例代碼展示了如何使用Tkinter創(chuàng)建一個(gè)Canvas對(duì)象,并向其添加一個(gè)矩形和一個(gè)橢圓:
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()
rectangle = canvas.create_rectangle(50, 50, 150, 150, fill='red')
oval = canvas.create_oval(100, 100, 200, 200, fill='blue')
root.mainloop()
在上面的示例中,首先創(chuàng)建了一個(gè)root窗口,并創(chuàng)建了一個(gè)Canvas對(duì)象,然后將Canvas對(duì)象添加到root窗口中。愛掏網(wǎng) - it200.com
接著,使用create_rectangle
方法繪制一個(gè)紅色的矩形,該方法接受四個(gè)參數(shù),前兩個(gè)參數(shù)表示矩形的左上角坐標(biāo),后兩個(gè)參數(shù)表示矩形的右下角坐標(biāo),fill參數(shù)表示填充顏色。愛掏網(wǎng) - it200.com
使用create_oval
方法繪制一個(gè)藍(lán)色橢圓,該方法同樣接受四個(gè)參數(shù),表示橢圓的左上角坐標(biāo)和右下角坐標(biāo)。愛掏網(wǎng) - it200.com
修改和刪除繪圖對(duì)象
繪圖對(duì)象可以通過調(diào)用Canvas對(duì)象的一些方法進(jìn)行修改或刪除。愛掏網(wǎng) - it200.com
接下來的示例展示了如何通過程序修改前面創(chuàng)建的矩形的顏色,并刪除橢圓:
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()
rectangle = canvas.create_rectangle(50, 50, 150, 150, fill='red')
oval = canvas.create_oval(100, 100, 200, 200, fill='blue')
# 修改矩形的顏色
canvas.itemconfig(rectangle, fill='green')
# 刪除橢圓
canvas.delete(oval)
root.mainloop()
在上面的示例中,使用itemconfig
方法修改矩形的顏色為綠色,同時(shí)使用delete
方法刪除了橢圓。愛掏網(wǎng) - it200.com
繪制文本和圖像
除了繪制圖形之外,Canvas還可以用于繪制文本和圖像。愛掏網(wǎng) - it200.com
下面的示例展示了如何在Canvas對(duì)象中繪制文本和圖像:
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()
# 繪制文本
text = canvas.create_text(150, 50, text='Hello, world!', font=('Arial', 16))
# 繪制圖像
image = tk.PhotoImage(file='image.gif')
canvas.create_image(150, 150, image=image)
root.mainloop()
在上面的示例中,首先繪制了一個(gè)文本,使用create_text
方法創(chuàng)建,該方法接受三個(gè)參數(shù),分別表示文本的坐標(biāo)和文本內(nèi)容。愛掏網(wǎng) - it200.com該示例還指定了文本的字體為Arial,大小為16。愛掏網(wǎng) - it200.com
接著,使用PhotoImage
類創(chuàng)建了一個(gè)圖像對(duì)象,然后使用create_image
方法在Canvas對(duì)象中繪制圖像,該方法接受三個(gè)參數(shù),前兩個(gè)參數(shù)表示圖像的中心坐標(biāo),第三個(gè)參數(shù)為圖像。愛掏網(wǎng) - it200.com
Canvas對(duì)象的事件處理
Canvas對(duì)象可以像其他Tkinter部件那樣響應(yīng)事件。愛掏網(wǎng) - it200.com下面的示例展示了如何在Canvas對(duì)象中處理鼠標(biāo)單擊事件:
import tkinter as tk
def handle_click(event):
print('clicked at', event.x, event.y)
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()
canvas.bind('<Button-1>', handle_click)
root.mainloop()
在上面的示例中,使用bind
方法為Canvas對(duì)象綁定了鼠標(biāo)單擊事件,當(dāng)鼠標(biāo)單擊事件發(fā)生時(shí),會(huì)調(diào)用handle_click
函數(shù),并傳遞一個(gè)event對(duì)象作為參數(shù)。愛掏網(wǎng) - it200.com該示例的handle_click
函數(shù)會(huì)輸出鼠標(biāo)單擊的位置坐標(biāo)。愛掏網(wǎng) - it200.com
總結(jié)
在本文中,我們了解了如何使用Python 3中的Tkinter模塊創(chuàng)建Canvas對(duì)象,并在Canvas對(duì)象中繪制圖形、文本和圖像。愛掏網(wǎng) - it200.com我們還了解了如何修改和刪除繪圖對(duì)象,以及如何響應(yīng)Canvas對(duì)象的事件。愛掏網(wǎng) - it200.comCanvas是一個(gè)非常強(qiáng)大的Tkinter組件,可以用于開發(fā)各種類型的GUI應(yīng)用程序。愛掏網(wǎng) - it200.com