亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python Tkinter Canvas畫(huà)布控件詳解

 更新時(shí)間:2022年01月21日 10:50:59   作者:嚴(yán)長(zhǎng)生  
Canvas 控件具有兩個(gè)功能,首先它可以用來(lái)繪制各種圖形,比如弧形、線條、橢圓形、多邊形和矩形等,其次 Canvas 控件還可以用來(lái)展示圖片。本文將具體介紹一直Tkinter中的畫(huà)布控件,需要的可以參考一下

Canvas 控件具有兩個(gè)功能,首先它可以用來(lái)繪制各種圖形,比如弧形、線條、橢圓形、多邊形和矩形等,其次 Canvas 控件還可以用來(lái)展示圖片(包括位圖),我們將這些繪制在畫(huà)布控件上的圖形,稱之為“畫(huà)布對(duì)象”。

每一個(gè)畫(huà)布對(duì)象都有一個(gè)“唯一身份ID”,這是 Tkinter 自動(dòng)為其創(chuàng)建的,從而方便控制和操作這些畫(huà)布對(duì)象。

通過(guò) Canvas 控件創(chuàng)建一個(gè)簡(jiǎn)單的圖形編輯器,讓用戶可以達(dá)到自定義圖形的目的,就像使用畫(huà)筆在畫(huà)布上繪畫(huà)一樣,可以繪制各式各樣的形狀,從而有更好的人機(jī)交互體驗(yàn)。

Canvas控件基本屬性

下面對(duì) Canvas 控件的常用屬性做簡(jiǎn)單的介紹,如下表所示:

屬性方法
background(bg)指定 Canvas 控件的背景顏色
borderwidth(bd)指定 Canvas 控件的邊框?qū)挾?/td>
closeenough1. 指定一個(gè)距離,當(dāng)鼠標(biāo)與畫(huà)布對(duì)象的距離小于該值時(shí),認(rèn)為鼠標(biāo)位于畫(huà)布對(duì)象上
2. 該選項(xiàng)是一個(gè)浮點(diǎn)類型的值
confine1. 指定 Canvas 控件是否允許滾動(dòng)超出 scrollregion 選項(xiàng)設(shè)置的滾動(dòng)范圍,默認(rèn)值為 True
selectbackground指定當(dāng)畫(huà)布對(duì)象(即在 Canvas 畫(huà)布上繪制的圖形)被選中時(shí)的背景色,
selectborderwidth指定當(dāng)畫(huà)布對(duì)象被選中時(shí)的邊框?qū)挾龋ㄟx中邊框)
selectforeground指定當(dāng)畫(huà)布對(duì)象被選中時(shí)的前景色
state設(shè)置 Canvas 的狀態(tài):"normal" 或 "disabled",默認(rèn)值是 "normal",注意,該值不會(huì)影響畫(huà)布對(duì)象的狀態(tài)
takefocus指定使用 Tab 鍵可以將焦點(diǎn)移動(dòng)到輸入框中,默認(rèn)為開(kāi)啟,將該選項(xiàng)設(shè)置為 False 避免焦點(diǎn)在此輸入框中
width指定 Canvas 的寬度,單位為像素
xscrollcommand與 scrollbar(滾動(dòng)條)控件相關(guān)聯(lián)(沿著 x 軸水平方向)
xscrollincrement1. 該選項(xiàng)指定 Canvas 水平滾動(dòng)的“步長(zhǎng)”
2. 例如 '3c' 表示 3 厘米,還可以選擇的單位有 'i'(英寸),'m'(毫米)和 'p'(DPI,大約是 '1i' 等于 '72p')
3. 默認(rèn)為 0,表示可以水平滾動(dòng)到任意位置
yscrollcommand與 scrollbar 控件(滾動(dòng)條)相關(guān)聯(lián)(沿著 y 軸垂直方向)
yscrollincrement1. 該選項(xiàng)指定 Canvas 垂直滾動(dòng)的“步長(zhǎng)”
2. 例如 '3c' 表示 3 厘米,還可以選擇的單位有 'i'(英寸),'m'(毫米)和 'p'(DPI,大約是 '1i' 等于 '72p')
3. 默認(rèn)值是 0,表示可以垂直方向滾動(dòng)到任意位置

上述屬性是用來(lái)設(shè)置 Canvas 控件的,下面示例定義了出一張畫(huà)布(Canvas),如下所示:

import tkinter as tk
window = tk.Tk()
window.title("C語(yǔ)言中文網(wǎng)")
window.geometry('400x200')
# 創(chuàng)庫(kù)不允許改變
window.resizable(0,0)
window.iconbitmap('C:/Users/Administrator/Desktop/C語(yǔ)言中文網(wǎng)logo.ico')
# 創(chuàng)建畫(huà)布
canvas = tk.Canvas(window,
                   bg='#CDC9A5',
                   height=200,
                   width=300)
canvas.pack()
window.mainloop()

程序運(yùn)行結(jié)果如下:

圖1:tkinter Canvas控件

Canvas控件繪圖常用方法

Cansvas 控件提供了一系列繪制幾何圖形的常用方法,下面對(duì)這些方法做簡(jiǎn)單介紹:

方法說(shuō)明
create_line(x0, y0, x1, y1, ... , xn, yn, options)1. 根據(jù)給定的坐標(biāo)創(chuàng)建一條或者多條線段;
2. 參數(shù) x0,y0,x1,y1,...,xn,yn 定義線條的坐標(biāo);
3. 參數(shù) options 表示其他可選參數(shù)
create_oval(x0, y0, x1, y1, options)1. 繪制一個(gè)圓形或橢圓形;
2. 參數(shù) x0 與 y0 定義繪圖區(qū)域的左上角坐標(biāo);參數(shù) x1 與 y1 定義繪圖區(qū)域的右下角坐標(biāo);
3. 參數(shù) options 表示其他可選參數(shù)
create_polygon(x0, y0, x1, y1, ... , xn, yn, options)1. 繪制一個(gè)至少三個(gè)點(diǎn)的多邊形;
2. 參數(shù) x0、y0、x1、y1、...、xn、yn 定義多邊形的坐標(biāo);
3. 參數(shù) options 表示其他可選參數(shù)
create_rectangle(x0, y0, x1, y1, options)1. 繪制一個(gè)矩形;
2. 參數(shù) x0 與 y0 定義矩形的左上角坐標(biāo);參數(shù) x 與 y1 定義矩形的右下角坐標(biāo);
3. 參數(shù) options 表示其他可選參數(shù)
create_text(x0, y0, text, options)1. 繪制一個(gè)文字字符串。其中
2. 參數(shù) x0 與 y0 定義文字字符串的左上角坐標(biāo),參數(shù) text 定義文字字符串的文字;
3. 參數(shù) options 表示其他可選參數(shù)
create_image(x, y, image)1. 創(chuàng)建一個(gè)圖片;
2. 參數(shù) x 與 y 定義圖片的左上角坐標(biāo);
3. 參數(shù) image 定義圖片的來(lái)源,必須是 tkinter 模塊的 BitmapImage 類或 PhotoImage 類的實(shí)例變量。
create_bitmap(x, y, bitmap)1. 創(chuàng)建一個(gè)位圖;
2. 參數(shù) x 與 y 定義位圖的左上角坐標(biāo);
3. 參數(shù) bitmap 定義位圖的來(lái)源,參數(shù)值可以是 gray12、gray25、gray50、gray75、hourglass、error、questhead、info、warning 或 question,或者也可以直接使用 XBM(X Bitmap)類型的文件,此時(shí)需要在 XBM 文件名稱前添加一個(gè) @ 符號(hào),例如 bitmap=@hello.xbm
create_arc(coord, start, extent, fill)1. 繪制一個(gè)弧形;
2. 參數(shù) coord 定義畫(huà)弧形區(qū)塊的左上角與右下角坐標(biāo);
3. 參數(shù) start 定義畫(huà)弧形區(qū)塊的起始角度(逆時(shí)針?lè)较颍?br />4. 參數(shù) extent 定義畫(huà)弧形區(qū)塊的結(jié)束角度(逆時(shí)針?lè)较颍?br />5. 參數(shù) fill 定義填充弧形區(qū)塊的顏色。

注意:上述方法都會(huì)返回一個(gè)畫(huà)布對(duì)象的唯一 ID。關(guān)于 options 參數(shù),下面會(huì)通過(guò)一個(gè)示例對(duì)經(jīng)常使用的參數(shù)做相關(guān)介紹。(但由于可選參數(shù)較多,并且每個(gè)方法中的參數(shù)作用大同小異,因此對(duì)它們不再逐一列舉)

從上述表格不難看出,Canvas 控件采用了坐標(biāo)系的方式來(lái)確定畫(huà)布中的每一點(diǎn)。一般情況下,默認(rèn)主窗口的左上角為坐標(biāo)原點(diǎn),這種坐標(biāo)系被稱作為“窗口坐標(biāo)系”,但也會(huì)存在另外一種情況,即畫(huà)布的大小可能大于主窗口,當(dāng)發(fā)生這種情況的時(shí),可以采用帶滾動(dòng)條的 Canvas 控件,此時(shí)會(huì)以畫(huà)布的左上角為坐標(biāo)原點(diǎn),我們將這種坐標(biāo)系稱為“畫(huà)布坐標(biāo)系”。

繪制直線

下面示例展示了如何在畫(huà)布(Canvas控件)上繪制一條虛線和實(shí)線,代碼如下:

from tkinter import *
root = Tk()
# 設(shè)置窗口的背景顏色以區(qū)別畫(huà)布
root.config(bg='#87CEEB')
root.title("C語(yǔ)言中文網(wǎng)")
root.geometry('450x350')
root.iconbitmap('C:/Users/Administrator/Desktop/C語(yǔ)言中文網(wǎng)logo.ico')
# 設(shè)置畫(huà)布的背景顏色為白色
cv=Canvas(root,bg="white",width =300, height = 250)
# 將控件放置在主窗口中
cv.pack()
# 設(shè)置坐標(biāo)點(diǎn),此處可以元組的形式來(lái)設(shè)置坐標(biāo)點(diǎn)
point=[(10,20),(20,30),(30,40),(40,100),(80,120),(150,90)]
# 創(chuàng)建畫(huà)布,添加線條
# fill 參數(shù)指定填充的顏色,如果為空字符串,則表示透明
# dash 參數(shù)表示用來(lái)繪制虛線輪廓,元組參數(shù),分別代表虛線中線段的長(zhǎng)度和線段之間的間隔
# arrow 設(shè)線段的箭頭樣式,默認(rèn)不帶箭頭,參數(shù)值 first 表示添加箭頭帶線段開(kāi)始位置,last表示到末尾占位置,both表示兩端均添加
# smooth 布爾值參數(shù),表示是否以曲線的樣式劃線,默認(rèn)為 False
# width 控制線寬
line1=cv.create_line(point,fill="purple",dash=(1,1),arrow=LAST,width=5)
print('線段line1的畫(huà)布id號(hào):',line1)
line2=cv.create_line(point,fill="red",arrow=BOTH,smooth=TRUE,width=5)
print('線段line2的畫(huà)布id號(hào):',line2)
# 移動(dòng)其中一條線段,只需要更改其坐標(biāo)就可以,使用 coords()方法移動(dòng)曲線
cv.coords(line2,50,30,25,35,35,40,50,120,60,170,10,180)
# 顯示窗口
root.mainloop()

程序運(yùn)行的最終結(jié)果,見(jiàn)下圖:

圖1:tkinter Canvas控件

上述示例中涉及了一部分參數(shù),比如 fill、dash、arrow 等,下表對(duì) create_line() 函數(shù)的相關(guān)參數(shù)做了簡(jiǎn)單介紹:

屬性說(shuō)明
activedash當(dāng)畫(huà)布對(duì)象狀態(tài)為 "active" 的時(shí)候,繪制虛線
activefill當(dāng)畫(huà)布對(duì)象狀態(tài)為 "active" 的時(shí)候,填充顏色
activestipple當(dāng)畫(huà)布對(duì)象狀態(tài)為 "active" 的時(shí)候,指定填充的位圖
activewidth當(dāng)畫(huà)布對(duì)象狀態(tài)為 "active" 的時(shí)候,指定邊框的寬度
arrow1. 默認(rèn)線段是不帶箭頭的,通過(guò)設(shè)置該選項(xiàng)添加箭頭到線段中
2. "first" 表示添加箭頭到線段開(kāi)始的位置
3. "last" 表示添加箭頭到線段結(jié)束的位置
4. "both" 表示兩端均添加箭頭
arrowshape1. 用一個(gè)三元組來(lái)指定箭頭的形狀,默認(rèn)值是 (8, 10, 3),元組中的數(shù)值分別代表箭頭中三條邊的長(zhǎng)度
capstyle1. 指定線段兩端的樣式,默認(rèn)值是 "butt"
2. 該選項(xiàng)的值可以是:
"butt"(線段的兩段平切于起點(diǎn)和終點(diǎn))
"projecting"(線段的兩段在起點(diǎn)和終點(diǎn)的位置將 width 選項(xiàng)設(shè)置的長(zhǎng)度分別延長(zhǎng)一半)
"round"(線段的兩段在起點(diǎn)和終點(diǎn)的位置將 width設(shè)置的長(zhǎng)度分別延長(zhǎng)一半,并以圓角進(jìn)行繪制)
dash繪制虛線,該選項(xiàng)值是一個(gè)整數(shù)元組,元組中的元素分別代表短線的長(zhǎng)度和間隔,比如 (3, 5) 代表 3 個(gè)像素的短線和 5 個(gè)像素的間隔
dashoffset指定虛線開(kāi)始的偏移位置,比如 dash=(5, 1, 2, 1),dashoffset=3,則從 2 開(kāi)始畫(huà)虛線
disableddash當(dāng)畫(huà)布對(duì)象狀態(tài)為 "disabled" 的時(shí)候,繪制虛線
disabledfill當(dāng)畫(huà)布對(duì)象狀態(tài)為 "disabled" 的時(shí)候,填充顏色
disabledstipple當(dāng)畫(huà)布對(duì)象狀態(tài)為 "disabled" 的時(shí)候,指定填充的位圖
disabledwidth當(dāng)畫(huà)布對(duì)象狀態(tài)為 "disabled" 的時(shí)候,指定邊框的寬度
fill1. 指定填充的顏色,空字符串表示透明
joinstyle1. 指定當(dāng)繪制兩個(gè)相鄰線段之間時(shí)接口的樣式,默認(rèn)為 "round"
2. 該選項(xiàng)的值可以是:
"round"(以連接點(diǎn)為圓心,1/2 width 選項(xiàng)設(shè)置的長(zhǎng)度為半徑來(lái)繪制圓角)
"bevel"(在連接點(diǎn)處將兩線段的夾角做平切操作)
"miter"(沿著兩線段的夾角延伸至一個(gè)點(diǎn))
offset指定當(dāng)點(diǎn)畫(huà)模式時(shí)填充位圖的偏移
smooth默認(rèn)值為 False,若設(shè)置為 True,表示將以曲線的樣式代替所繪線段
splinesteps當(dāng)繪制曲線的時(shí),該選項(xiàng)指定由多少條折線來(lái)構(gòu)成曲線,默認(rèn)值是 12,這里需要注意,只有當(dāng) smooth 選項(xiàng)為 True 時(shí)該選項(xiàng)才會(huì)生效。
state指定該畫(huà)布對(duì)象的狀態(tài),默認(rèn)值為 "normal",參數(shù)值有 "normal","disabled"(不可用)和 "hidden"(隱藏)三種狀態(tài)。
stipple指定一個(gè)位圖進(jìn)行填充,默認(rèn)值為空字符串,表示實(shí)心
tags為創(chuàng)建的畫(huà)布對(duì)象添加標(biāo)簽
width指定邊框的寬度

對(duì)于扇形、矩形、三角形、圓形等,這些封閉式圖形,它們由輪廓線和填充顏色兩部分組成。在繪制這些圖形時(shí)相關(guān)函數(shù)的可選參數(shù)與上述表格也存在略微差異,下面以繪制扇形的 create_arc() 函數(shù)為例做簡(jiǎn)單的介紹:

屬性方法
activedash當(dāng)畫(huà)布對(duì)象狀態(tài)為 "active" 的時(shí)候,繪制虛線
activefill當(dāng)畫(huà)布對(duì)象狀態(tài)為 "active" 的時(shí)候,填充顏色
activeoutline當(dāng)畫(huà)布對(duì)象狀態(tài)為 "active" 的時(shí)候,繪制輪廓線
activeoutlinestipple當(dāng)畫(huà)布對(duì)象狀態(tài)為 "active" 的時(shí)候,指定填充輪廓的位圖
activestipple當(dāng)畫(huà)布對(duì)象狀態(tài)為 "active" 的時(shí)候,指定填充的位圖
activewidth當(dāng)畫(huà)布對(duì)象狀態(tài)為 "active" 的時(shí)候,指定邊框的寬度
dash指定繪制虛線輪廓,與繪制線段的含義相同
dashoffset指定虛線輪廓開(kāi)始的偏移位置
disableddash當(dāng)畫(huà)布對(duì)象狀態(tài)為 "disabled" 的時(shí)候,繪制虛線
disabledfill當(dāng)畫(huà)布對(duì)象狀態(tài)為 "disabled" 的時(shí)候,填充顏色
disabledoutline當(dāng)畫(huà)布對(duì)象狀態(tài)為 "disabled" 的時(shí)候,繪制輪廓線
disabledoutlinestipple當(dāng)畫(huà)布對(duì)象狀態(tài)為 "disabled" 的時(shí)候,指定填充輪廓的位圖
disabledstipple當(dāng)畫(huà)布對(duì)象狀態(tài)為 "disabled" 的時(shí)候,指定填充的位圖
disabledwidth當(dāng)畫(huà)布對(duì)象狀態(tài)為 "disabled" 的時(shí)候,指定邊框的寬度
extent指定跨度(從 start 選項(xiàng)指定的位置開(kāi)始到結(jié)束位置的角度)默認(rèn)值是 90.0
fill與上述表格的含義相同,表示指定的填充顏色,若為空字符串則為透明色
offset指定當(dāng)點(diǎn)畫(huà)模式時(shí)填充位置的偏移,參數(shù)值為 "x,y"坐標(biāo)偏移和位置偏移兩種方式,比如 "ne"/"e" 等
outline指定輪廓的顏色
outlineoffset指定當(dāng)點(diǎn)畫(huà)模式繪制輪廓時(shí)位圖的偏移
outlinestipple當(dāng) outline 選項(xiàng)被設(shè)置時(shí),該選項(xiàng)用于指定一個(gè)位圖來(lái)填充邊框,默認(rèn)值是空字符串,表示黑色
start指定起始位置的偏移角度
style 默認(rèn)創(chuàng)建的是扇形,指定該方法創(chuàng)建的是扇形("pieslice")、弓形("chord")還是弧形("arc")
tags為創(chuàng)建的畫(huà)布對(duì)象添加標(biāo)簽
width指定邊框的寬度

在實(shí)際的使用的過(guò)程中經(jīng)常用到的參數(shù)有 dash、fill、outline、extend 和 start,但是這么多的參數(shù)我們也不可能都記住,這時(shí)查手冊(cè)是一種很好的方法,官網(wǎng)文檔地址:點(diǎn)擊前往。

下面讓我們來(lái)一組繪制幾何圖形的簡(jiǎn)單示例:

from tkinter import *
root = Tk()
# 設(shè)置主窗口區(qū)的背景顏色以區(qū)別畫(huà)布區(qū)的顏色
root.config(bg='#8DB6CD')
root.title("C語(yǔ)言中文網(wǎng)")
root.geometry('500x400')
root.iconbitmap('C:/Users/Administrator/Desktop/C語(yǔ)言中文網(wǎng)logo.ico')
# 將畫(huà)布設(shè)置為白色
canvas = Canvas(root,width = 400,height = 400,bg='white')
# 設(shè)置基準(zhǔn)坐標(biāo)
x0,y0,x1,y1 = 10,10,80,80
# 繪制扇形,起始角度為 0 度,結(jié)束角度為 270, 扇形區(qū)域填充色為淡藍(lán)色,輪廓線為藍(lán)色,線寬為 2px
arc = canvas.create_arc(x0, y0, x1, y1,start = 0, extent = 270, fill = '#B0E0E6',outline ='blue',width = 2)
# 繪制圓形
oval = canvas.create_oval(x0+150, y0, x1+150, y1,fill ='#CD950C',outline = 'blue',width=2)
# 繪制矩形,并將輪廓線設(shè)置為透明色,即不顯示最外圍的輪廓線,默認(rèn)為黑色
rect = canvas.create_rectangle(x0,y0+100,x1,y1+100,fill='red',outline = '')
# 繪制一個(gè)三角形,填充色為綠色
trigon = canvas.create_polygon(80,80,150,80,200,200, outline="", fill="green",)
# 當(dāng)然也可以繪制一個(gè)任意多邊形,只要你的坐標(biāo)正確就可以
# 繪制一個(gè)多邊形,首先定義一系列的多邊形上的坐標(biāo)點(diǎn)
poly_points=[(0,280),(140,200),(140,240),(270,240),(270,320),(140,320),(140,360)]
polygon = canvas.create_polygon(poly_points,fill="#BF3EFF")
# 放置畫(huà)布在主窗口
canvas.pack()
# 顯示窗口
root.mainloop()

程序運(yùn)行結(jié)果如下所示:

圖2:tkinter繪制幾何圖形

注意:create_rectangle() 方法的前兩個(gè)參數(shù)決定了矩形的左上角坐標(biāo),后兩個(gè)參數(shù)決定了矩形的右下角坐標(biāo);另外 create_oval() 方法并不是只能繪制圓形,還能繪制橢圓形,這取決于傳入的參數(shù)。

除了能夠繪制幾何圖形之外,Tkinter 還可以展示圖片、創(chuàng)建位圖以及文本信息等,示例如下所示:

from tkinter import *
root=Tk()
# # 設(shè)置主窗口區(qū)的背景顏色以區(qū)別畫(huà)布區(qū)的顏色
root.config(bg='#8DB6CD')
root.title("C語(yǔ)言中文網(wǎng)")
root.geometry('500x300')
root.iconbitmap('C:/Users/Administrator/Desktop/C語(yǔ)言中文網(wǎng)logo.ico')
# # 將畫(huà)布設(shè)置為白色
cv = Canvas(root,bg='white')
# tkinter 提供的內(nèi)置位圖名稱
bitmaps = ["error", "gray75", "gray50", "gray25", "gray12",
"hourglass", "info", "questhead", "question", "warning"]
# 列出所有的位圖樣式
for i in range(len(bitmaps)):
    # 前兩個(gè)參數(shù)指定一個(gè)位圖的位置,后續(xù)依次排列
    cv.create_bitmap((i+1)*30,30,bitmap=bitmaps[i])
#并在畫(huà)布上添加文本
# 參數(shù)說(shuō)明,前兩個(gè)參數(shù)(x0,y0)參照點(diǎn),指定文字字符串的左上角坐標(biāo)
# anchor 指定了文本的對(duì)于參照點(diǎn)的相對(duì)位置,以方位來(lái)指定,比如 W/E/N/S等
cv.create_text(30,80,text = "tkinter內(nèi)置位圖預(yù)覽",fill ='#7CCD7C',anchor = W,font =('微軟雅黑',15,'bold'))
# 展示圖片,使用 PhotoImage()來(lái)加載圖片
img = PhotoImage (file="C:/Users/Administrator/Desktop/c.biancheng.gif")
cv.create_image(30,150,image = img,anchor =W)
cv.create_text(30,220,text = "圖片預(yù)覽",fill ='#7CCD7C',anchor = W,font =('微軟雅黑',15,'bold'))
cv.pack()
mainloop()

程序運(yùn)行結(jié)果如下:

圖3:tkinter Canvas控件

注意,添加到 Canvas 上的對(duì)象會(huì)一直保留直著。如果你希望修改它們,您可以使用 coords() 和 move() 方法來(lái)移動(dòng)畫(huà)布上的對(duì)象,當(dāng)然您可以使用 delete() 來(lái)刪除它們,示例如下:

from tkinter import *
root=Tk()
# # 設(shè)置主窗口區(qū)的背景顏色以區(qū)別畫(huà)布區(qū)的顏色
root.config(bg='#8DB6CD')
root.title("C語(yǔ)言中文網(wǎng)")
root.geometry('500x300')
root.iconbitmap('C:/Users/Administrator/Desktop/C語(yǔ)言中文網(wǎng)logo.ico')
# 定義移動(dòng)函數(shù)
def move_img():
    # 定義移動(dòng)坐標(biāo)
    cv.move(image1,50,30)
# # 將畫(huà)布設(shè)置為白色
cv = Canvas(root,bg='white')
# 使用 PhotoImage()來(lái)加載圖片
img = PhotoImage (file="C:/Users/Administrator/Desktop/c.biancheng.gif")
image1=cv.create_image(30,150,image = img,anchor =W)
# 將按鈕放置在畫(huà)布中
btn=Button(cv,text="點(diǎn)擊移動(dòng)畫(huà)布",bg="#8A8A8A",activebackground="#7CCD7C",command=move_img)
# 在指定位置創(chuàng)建一個(gè)窗口控件,tags來(lái)添加標(biāo)簽
cv.create_window(365,250,height=30,width=30,window=btn)
# 調(diào)用delete() 刪除畫(huà)布對(duì)象,若傳入ALL,則刪除所有的畫(huà)布對(duì)象
#cv.delete(image1)
cv.pack()
# 顯示窗口
root.mainloop()

程序運(yùn)行結(jié)果如下:

圖4:移動(dòng)畫(huà)布對(duì)象

注意:使用畫(huà)布控件允許用戶自己進(jìn)行繪圖,但這需要與 tkinter 事件機(jī)制相配合才能實(shí)現(xiàn),在后續(xù)會(huì)做相關(guān)介紹。

到此這篇關(guān)于Python Tkinter Canvas畫(huà)布控件詳解的文章就介紹到這了,更多相關(guān)Python Tkinter Canvas內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python數(shù)據(jù)分析之雙色球基于線性回歸算法預(yù)測(cè)下期中獎(jiǎng)結(jié)果示例

    Python數(shù)據(jù)分析之雙色球基于線性回歸算法預(yù)測(cè)下期中獎(jiǎng)結(jié)果示例

    這篇文章主要介紹了Python數(shù)據(jù)分析之雙色球基于線性回歸算法預(yù)測(cè)下期中獎(jiǎng)結(jié)果,涉及Python基于線性回歸算法的數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 解決PyQt5 無(wú)邊框后窗口的移動(dòng)問(wèn)題

    解決PyQt5 無(wú)邊框后窗口的移動(dòng)問(wèn)題

    這篇文章主要介紹了解決PyQt5 無(wú)邊框后窗口的移動(dòng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • sklearn-SVC實(shí)現(xiàn)與類參數(shù)詳解

    sklearn-SVC實(shí)現(xiàn)與類參數(shù)詳解

    今天小編就為大家分享一篇sklearn-SVC實(shí)現(xiàn)與類參數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Django實(shí)現(xiàn)支付寶付款和微信支付的示例代碼

    Django實(shí)現(xiàn)支付寶付款和微信支付的示例代碼

    支付寶支付和微信支付是當(dāng)今互聯(lián)網(wǎng)產(chǎn)品常用的功能,這篇文章主要介紹了Django實(shí)現(xiàn)支付寶付款和微信支付的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python使用Crypto庫(kù)實(shí)現(xiàn)加密解密的示例詳解

    Python使用Crypto庫(kù)實(shí)現(xiàn)加密解密的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Python如何使用Crypto庫(kù)實(shí)現(xiàn)加密解密的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2023-01-01
  • Python入門之使用pandas分析excel數(shù)據(jù)

    Python入門之使用pandas分析excel數(shù)據(jù)

    這篇文章主要給大家介紹了關(guān)于Python入門學(xué)習(xí)之使用pandas分析excel數(shù)據(jù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • YOLOv5車牌識(shí)別實(shí)戰(zhàn)教程(五)字符分割與識(shí)別

    YOLOv5車牌識(shí)別實(shí)戰(zhàn)教程(五)字符分割與識(shí)別

    這篇文章主要介紹了YOLOv5車牌識(shí)別實(shí)戰(zhàn)教程(五)字符分割與識(shí)別,在這個(gè)教程中,我們將一步步教你如何使用YOLOv5進(jìn)行車牌識(shí)別,幫助你快速掌握YOLOv5車牌識(shí)別技能,需要的朋友可以參考下
    2023-04-04
  • Python常遇到的錯(cuò)誤和異常

    Python常遇到的錯(cuò)誤和異常

    這篇文章主要介紹了Python常遇到的錯(cuò)誤和異常,在日常的學(xué)習(xí)Python過(guò)程中,由于本身的編程水平受限,時(shí)不時(shí)的給我拋出一個(gè)異常讓我真的很難受;在學(xué)習(xí)的過(guò)程中發(fā)現(xiàn)Python中的錯(cuò)誤分為語(yǔ)法錯(cuò)誤和異常兩種。下面來(lái)看看下面文章錯(cuò)誤異常的實(shí)例,需要的朋友可以參考一下
    2021-11-11
  • Python字符串格式化輸出方法分析

    Python字符串格式化輸出方法分析

    這篇文章主要介紹了Python字符串格式化輸出方法,結(jié)合實(shí)例形式分析了Python格式化構(gòu)建字符串的三種常用技巧,需要的朋友可以參考下
    2016-04-04
  • Tensorflow分批量讀取數(shù)據(jù)教程

    Tensorflow分批量讀取數(shù)據(jù)教程

    今天小編就為大家分享一篇Tensorflow分批量讀取數(shù)據(jù)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02

最新評(píng)論