Tkinter canvas的畫(huà)布參數(shù),刪除組件,添加垂直滾動(dòng)條詳解
1、畫(huà)布 Canvas的參數(shù)
from tkinter import *
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(
master=win, # 父控件
bg='orange', # 背景顏色
bd=2, # 邊框?qū)挾?
closeenough=1, # 當(dāng)鼠標(biāo)與畫(huà)布上組件的距離小于該值時(shí),認(rèn)為鼠標(biāo)在該組件上,是一個(gè)浮點(diǎn)型的值
cursor='circle', # 鼠標(biāo)飄過(guò)的樣式
height=300, # 畫(huà)布的高
width=300, # 畫(huà)布的寬
highlightbackground='blue', # 沒(méi)有獲得焦點(diǎn)時(shí)高亮邊框的顏色
highlightcolor='red', # 獲得焦點(diǎn)時(shí)高亮邊框的顏色
highlightthickness=5, # 高亮邊框的寬度
relief='groove', # 邊框的樣式 flat, groove, raised, ridge, solid, or sunken
state='normal', # 狀態(tài) normal or disabled
scrollregion=(0, 0, 400, 400), # 畫(huà)布可以被滾動(dòng)的范圍
confine=True, # 畫(huà)布是否允許滾動(dòng)超出 scrollregion 選項(xiàng)指定的范圍
selectbackground='yellow', # 畫(huà)布對(duì)象被選中時(shí)的背景顏色
selectborderwidth=10, # 畫(huà)布對(duì)象被選中時(shí)的邊框?qū)挾?
takefocus=True, # 使用 Tab 鍵是否可以將焦點(diǎn)移動(dòng)到輸入框中
yscrollcommand=None, # 設(shè)置垂直滾動(dòng)條,一般與滾動(dòng)條相關(guān)聯(lián)使用
yscrollincrement=1, # 設(shè)置垂直滾動(dòng)條的步長(zhǎng)
xscrollcommand=None, # 設(shè)置水平滾動(dòng)條,一般與滾動(dòng)條相關(guān)聯(lián)使用
xscrollincrement=1, # 設(shè)置水平滾動(dòng)條的步長(zhǎng)
)
canvas.pack(pady=50)
canvas.create_window((100, 100), window=Entry(canvas))
Button(win, text='按鈕').pack()
win.mainloop()

2、刪除鼠標(biāo)下的組件
from tkinter import *
def event(w):
# current 表示刪除鼠標(biāo)下的組件
canvas.delete('current')
win = Tk()
win.geometry('500x500+500+100')
canvas = Canvas(win)
canvas.pack(fill=BOTH, expand=True)
# 畫(huà)實(shí)線,填充橙色,設(shè)置寬度為10
for i in range(10, 200, 20):
canvas.create_line(i, 100, i, 200, width=10, fill='orange')
# 綁定鼠標(biāo)左鍵點(diǎn)擊事件
canvas.bind('<Button-1>', event)
win.mainloop()

3、帶垂直滾動(dòng)條的畫(huà)布
from tkinter import *
def event2():
for i in range(0, 220):
# 繪制實(shí)線,填充粉色,設(shè)置寬度為10
canvas.create_line(0, i, 100, i, fill='pink', width=10)
for i in range(230, 300):
# 繪制實(shí)線,填充藍(lán)色,設(shè)置寬度為50
canvas.create_line(0, i, 100, i, fill='blue', width=50)
def event1(event):
"""
事件的屬性 delta 解析
在MouseWheel 事件中,正值代表上卷,負(fù)值代表下卷;
在 Window 下,通常是 120 的倍數(shù);在 MacOS 下,為 1 的倍數(shù)
"""
number = int(-event.delta / 120)
canvas.yview_scroll(number, 'units')
win = Tk()
win.geometry('500x500+500+100')
frame = Frame(win)
sv = Scrollbar(frame) # 定義垂直滾動(dòng)條
sv.pack(side=RIGHT, fill=Y) # 放置垂直滾動(dòng)條在最右側(cè),占滿Y軸
canvas = Canvas(frame, bd=2, bg='orange', relief='groove')
canvas.pack()
canvas.config(yscrollcommand=sv.set) # 設(shè)置畫(huà)布的Y軸滾動(dòng)條函數(shù)與垂直滾動(dòng)條綁定
canvas.config(scrollregion=(0, 0, 300, 800)) # 設(shè)置畫(huà)布可以滾動(dòng)的范圍
sv.config(command=canvas.yview) # 設(shè)置垂直滾動(dòng)條的函數(shù)與畫(huà)布的Y軸滾動(dòng)條事件綁定
frame.pack(pady=50)
canvas.config(yscrollincrement=1) # 設(shè)置滾動(dòng)條的步長(zhǎng)
canvas.bind("<MouseWheel>", event1) # 添加滾輪事件
Button(text='為畫(huà)布添加組件', command=event2).pack()
event2()
win.mainloop()

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python subprocess庫(kù)六個(gè)實(shí)例快速掌握
這次來(lái)說(shuō)Python的第三方庫(kù)subprocess庫(kù),在python2.4以上的版本commands模塊被subprocess取代了。一般當(dāng)我們?cè)谟肞ython寫(xiě)運(yùn)維腳本時(shí),需要履行一些Linux shell的命令,Python中subprocess模塊就是專(zhuān)門(mén)用于調(diào)用Linux shell命令,并返回狀態(tài)和結(jié)果,可以完美的解決這個(gè)問(wèn)題2022-10-10
python判斷一個(gè)集合是否為另一個(gè)集合的子集方法
下面小編就為大家分享一篇python判斷一個(gè)集合是否為另一個(gè)集合的子集方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
python中如何利用matplotlib畫(huà)多個(gè)并列的柱狀圖
python是一個(gè)很有趣的語(yǔ)言,可以在命令行窗口運(yùn)行,下面這篇文章主要給大家介紹了關(guān)于python中如何利用matplotlib畫(huà)多個(gè)并列的柱狀圖的相關(guān)資料,需要的朋友可以參考下2022-01-01
Python + Chrome抓取AJAX動(dòng)態(tài)數(shù)據(jù)的兩種方法
在現(xiàn)代 Web 開(kāi)發(fā)中,AJAX技術(shù)被廣泛應(yīng)用于動(dòng)態(tài)加載數(shù)據(jù),使得網(wǎng)頁(yè)能夠在不刷新的情況下更新內(nèi)容,本文將詳細(xì)介紹 Python + Chrome 如何抓取 AJAX 動(dòng)態(tài)數(shù)據(jù),并提供兩種方法的完整實(shí)現(xiàn)代碼,需要的朋友可以參考下2025-04-04
python用分?jǐn)?shù)表示矩陣的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于python如何利用分?jǐn)?shù)表示矩陣的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
python中ASCII碼字符與int之間的轉(zhuǎn)換方法
今天小編就為大家分享一篇python中ASCII碼字符與int之間的轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Python之根據(jù)輸入?yún)?shù)計(jì)算結(jié)果案例講解
這篇文章主要介紹了Python之根據(jù)輸入?yún)?shù)計(jì)算結(jié)果案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
python對(duì)常見(jiàn)數(shù)據(jù)類(lèi)型的遍歷解析
這篇文章主要介紹了python對(duì)常見(jiàn)數(shù)據(jù)類(lèi)型的遍歷解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08

