fill = 'xxx' # 填充xxx顏色
width = 'xxx' # 設置寬度或邊框寬度
outline = 'orange' # 設置邊框的顏色
canvas.itemcget(name, 'xxx') # 獲取組件name的xxx屬性
canvas.coords(name) # 獲取組件的橫坐標和縱坐標
canvas.coords(name, x1, y1, x2, y2) # 重新設置組件的橫坐標和縱坐標
from tkinter import *
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(win)
canvas.pack(fill=BOTH, expand=True)
# 畫實線,填充橙色
canvas.create_line(100, 100, 100, 200, fill='orange')
# 畫實線,填充橙色,設置寬度為10
canvas.create_line(150, 100, 150, 200, fill='orange', width=10)
# 畫虛線,填充橙色
canvas.create_line(200, 100, 200, 200, fill='orange', dash=(2, 2))
win.mainloop()

from tkinter import *
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(win)
canvas.pack(fill=BOTH, expand=True)
# 畫矩形,填充橙色
canvas.create_rectangle(100, 100, 200, 200, fill='orange')
# 畫矩形,填充橙色,設置邊框寬度為10
canvas.create_rectangle(250, 100, 350, 200, fill='orange', width=10)
# 畫矩形,填充橙色,設置邊框是紅色
canvas.create_rectangle(400, 100, 450, 200, fill='orange', outline='red', width=2)
win.mainloop()

from tkinter import *
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(win)
canvas.pack(fill=BOTH, expand=True)
# 畫文字
canvas.create_text(100, 100, text='文字')
# 畫文字,填充橙色
canvas.create_text(200, 100, text='文字', fill='orange')
win.mainloop()

from tkinter import *
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(win)
canvas.pack(fill=BOTH, expand=True)
# 畫圓,填充橙色
canvas.create_oval(100, 100, 200, 200, fill='orange')
# 畫橢圓,填充橙色,設置邊框寬度5,邊框顏色pink
canvas.create_oval(200, 200, 300, 350, fill='orange', width=5, outline='pink')
win.mainloop()

from tkinter import *
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(win)
canvas.pack(fill=BOTH, expand=True)
# 繪制多邊形,填充粉色
point = [(50, 50), (100, 50), (100, 100), (75, 150), (50, 100)]
canvas.create_polygon(point, fill='pink', width=5, outline='orange')
win.mainloop()

from tkinter import *
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(win)
canvas.pack(fill=BOTH, expand=True)
# 畫實線,填充橙色,寬度為10
line = canvas.create_line(150, 100, 150, 200, fill='orange', width=10)
def event():
# 使用 itemcget 來獲取組件的屬性
fill = canvas.itemcget(line, 'fill')
print(fill)
width = canvas.itemcget(line, 'width')
print(width)
btn = Button(win, text='點擊獲取實線屬性', command=event)
canvas.create_window((100, 50), window=btn)
win.mainloop()

from tkinter import *
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(win)
canvas.pack(fill=BOTH, expand=True)
# 畫實線,填充橙色,寬度為10
line = canvas.create_line(150, 100, 150, 200, fill='orange', width=10)
def move_line():
# 使用 coords 來重新設置組件的位置
canvas.coords(line, 200, 100, 200, 200)
btn = Button(win, text='點擊移動實線', command=move_line)
# 使用 itemconfig 來重新設置組件的屬性
btn1 = Button(win, text='點擊切換實線填充顏色', command=lambda: canvas.itemconfig(line, fill='pink'))
canvas.create_window((100, 50), window=btn)
canvas.create_window((300, 50), window=btn1)
win.mainloop()

from tkinter import *
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(win)
canvas.pack(fill=BOTH, expand=True)
# 畫實線,填充橙色,寬度為10
line = canvas.create_line(150, 100, 150, 200, fill='orange', width=10)
def move_line():
# 使用 coords 來重新設置組件的位置
canvas.coords(line, 200, 100, 200, 200)
btn = Button(win, text='點擊移動實線', command=move_line)
# 使用 move 移動組件,參數表示沿XY軸移動的距離
btn1 = Button(win, text='點擊移動實線2', command=lambda: canvas.move(line, 10, 0))
canvas.create_window((100, 50), window=btn)
canvas.create_window((300, 50), window=btn1)
win.mainloop()

from tkinter import *
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(win)
canvas.pack(fill=BOTH, expand=True)
# 畫實線,填充橙色
line = canvas.create_line(100, 100, 100, 200, fill='orange')
# 畫實線,填充橙色,寬度為10
canvas.create_line(150, 100, 150, 200, fill='orange', width=10)
# 畫虛線,填充橙色
canvas.create_line(200, 100, 200, 200, fill='orange', dash=(2, 2))
# 使用delete來刪除組件
canvas.create_window((250, 50), window=Button(text='刪除橙色實線',
command=lambda x=canvas: x.delete(line)))
# all 代表畫布的所有組件
canvas.create_window((150, 50), window=Button(text='刪除畫布所有組件',
command=lambda x=canvas: x.delete('all')))
win.mainloop()