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

Python之tkinter列表框Listbox與滾動(dòng)條Scrollbar解讀

 更新時(shí)間:2023年05月09日 14:29:35   作者:qq_1471587327  
這篇文章主要介紹了Python之tkinter列表框Listbox與滾動(dòng)條Scrollbar解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

列表框Listbox簡(jiǎn)介

列表框(Listbox)是一個(gè)顯示一系列選項(xiàng)的Widget控件,用戶可以進(jìn)行單項(xiàng)或多項(xiàng)的選擇

使用格式如下:

Listbox(父對(duì)象, options, ...)

參數(shù):

  • 第一個(gè)參數(shù):父對(duì)象,表示這個(gè)列表框?qū)⒔⒃谀囊粋€(gè)窗口內(nèi)
  • 第二個(gè)參數(shù):options,參數(shù)如下
參數(shù)含義
borderwidth邊界寬度默認(rèn)是兩個(gè)像素
bd邊界寬度默認(rèn)是兩個(gè)像素
background背景色彩
bg背景色彩
cursor當(dāng)鼠標(biāo)光標(biāo)移至列表框上時(shí)的形狀
foreground前景色彩
fg前景色彩
font字形
height高,單位是字符,默認(rèn)是10
highlightcolor當(dāng)列表框取得焦點(diǎn)時(shí)的顏色
highlightthinckness當(dāng)列表框取得焦點(diǎn)時(shí)的厚度
listvariable以變量方式處理選項(xiàng)內(nèi)容
relief可由此控制列表框外框默認(rèn)是SUNKEN
selectbackground被選取字符串的背景色彩
selectmode可以決定有多少個(gè)選項(xiàng)可以被選,以及鼠標(biāo)拖拽如何影響選項(xiàng)
width寬,單位是字符寬
xscrollcommand在X軸使用滾動(dòng)條
yscrollcommand在Y軸使用滾動(dòng)條

selectmode的參數(shù)

參數(shù)含義
BROWSE這是默認(rèn)值,我們可以選擇一個(gè)選項(xiàng),如果選取一個(gè)選項(xiàng)同時(shí)拖拽鼠標(biāo),將造成選項(xiàng)最后的位置是被選取的項(xiàng)目位置
SINGLE只能選擇一個(gè)選項(xiàng),可以用單擊方式選取,不可用拖拽方式更改所選的項(xiàng)目
MULTIPLE可以選擇多個(gè)選項(xiàng),單擊項(xiàng)目可以切換是否選擇該項(xiàng)目
EXTENDED單擊第一個(gè)項(xiàng)目然后拖拽到最后一個(gè)項(xiàng)目,即可選擇這個(gè)區(qū)間的一系列選項(xiàng)。單擊可以選擇第一個(gè)項(xiàng)目,此時(shí)若是按住Shift鍵并單擊另一個(gè)項(xiàng)目,可以選取區(qū)間項(xiàng)目

Listbox 的初步應(yīng)用

例子:

import tkinter
root = tkinter.Tk()
root.geometry("300x180")
# 建立listbox1
listbox1 = tkinter.Listbox(root)
listbox1.pack(side=tkinter.LEFT, padx=5, pady=5)
# 建立listbox2
listbox2 = tkinter.Listbox(root, height=5, relief='raised')
listbox2.pack(anchor=tkinter.N, side=tkinter.LEFT, padx=5, pady=5)
root.mainloop()

運(yùn)行結(jié)果:

建立列表框項(xiàng)目 insert()

可以使用insert()方法為列表框建立項(xiàng)目,這個(gè)方法的使用格式如下

insert(index, elements)

參數(shù):

  • 第一個(gè)參數(shù):父index,是項(xiàng)目插入的位置,如果是插在最后面可以使用END
  • 第二個(gè)參數(shù):elements,插入的字符串

例子:

import tkinter
root = tkinter.Tk()
# 建立listbox1
listbox1 = tkinter.Listbox(root)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
listbox1.insert(tkinter.END, 'abc')
listbox1.insert(tkinter.END, '123')
listbox1.insert(tkinter.END, '!$#')
root.mainloop()

運(yùn)行結(jié)果:

其實(shí)也可以這樣

listbox1.insert(tkinter.END, 'abc', '123', '!$#')

運(yùn)行結(jié)果也是一樣的

如果有很多的項(xiàng)目需要插入,我們可以使用循環(huán)的方式來(lái)進(jìn)行

例子:

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
root.mainloop()

運(yùn)行結(jié)果:

例子:

重新設(shè)計(jì)程序,使列表框可以多選

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.MULTIPLE)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
root.mainloop()

運(yùn)行結(jié)果:

例子:

重新設(shè)計(jì),單擊一個(gè)項(xiàng)目,按住Shift可以選擇一個(gè)區(qū)間內(nèi)的項(xiàng)目

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
root.mainloop()

運(yùn)行結(jié)果:

前面是單擊并拖拽,后面是使用Shift鍵選擇一個(gè)區(qū)間內(nèi)的項(xiàng)目

使用insert(ACTIVE, elements),表示是在目前選項(xiàng)前面加入一個(gè)項(xiàng)目,如果尚未選擇選項(xiàng)則此ACTIVE是0

例子:

使用ACTIVE

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
listbox1.insert(tkinter.ACTIVE, '豆皮', '牛肉面', '湯圓')
root.mainloop()

運(yùn)行結(jié)果:

顯示已經(jīng)在最上面了,也就是一次性在最上面插入了三個(gè)項(xiàng)目

Listbox的基本操作

下面是一些常用的Listbox 控件操作的方法

操作方法含義
size()傳回列表項(xiàng)目的數(shù)量
selection_set()選取特定索引項(xiàng)
delete()刪除特定索引項(xiàng)
get()傳回指定索引項(xiàng)
curselection()傳回選取項(xiàng)目的索引
selection_include()檢查指定索引是否被選取

列出列表框的選項(xiàng)數(shù)量 size()

例子:

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
print('數(shù)量是:', listbox1.size())
root.mainloop()

運(yùn)行結(jié)果:

數(shù)量是: 12

選取特定索引項(xiàng) selection_set()

如果selection_set() 方法內(nèi)含一個(gè)參數(shù),表示選取這個(gè)索引項(xiàng),這個(gè)功能常被用于在建立Listbox 后,設(shè)定初次選擇的項(xiàng)目,通俗易懂的說(shuō),就是一進(jìn)去默認(rèn)選的是哪一個(gè)

例子:

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
# 這里設(shè)置默認(rèn)選定的索引項(xiàng)
listbox1.select_set(1)
root.mainloop()

運(yùn)行結(jié)果:

如果設(shè)置兩個(gè)索引值,就表示選取區(qū)間選項(xiàng),第一個(gè)參數(shù)是起始索引項(xiàng),第二個(gè)參數(shù)是區(qū)間的結(jié)束索引項(xiàng)

例子:

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
# 這里設(shè)置默認(rèn)選定的索引項(xiàng)
listbox1.select_set(1, 3)
root.mainloop()

運(yùn)行結(jié)果:

刪除特定索引項(xiàng)

如果delete() 方法內(nèi)含一個(gè)參數(shù),表示刪除這個(gè)索引項(xiàng)

例子

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
# 這里設(shè)置刪除選定的索引項(xiàng)
listbox1.delete(0)
root.mainloop()

運(yùn)行結(jié)果:

可以很自然的看到“熱干面”選項(xiàng)已經(jīng)不見(jiàn)了

如果delete() 有兩個(gè)參數(shù)是,表示選取區(qū)間選項(xiàng),第一個(gè)參數(shù)是區(qū)間的起始索引項(xiàng),第二個(gè)參數(shù)是區(qū)間的結(jié)束索引項(xiàng)

例子:

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
# 這里設(shè)置刪除選定的索引項(xiàng)
listbox1.delete(0, 1)
root.mainloop()

運(yùn)行結(jié)果:

可以看到“熱干面、擔(dān)擔(dān)面”兩個(gè)選項(xiàng)已經(jīng)刪除了

傳回指定的索引項(xiàng) get()

如果get() 方法內(nèi)含一個(gè)參數(shù),表示傳回這個(gè)索引項(xiàng)的元素內(nèi)容

例子:

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
print(listbox1.get(1))
root.mainloop()

運(yùn)行結(jié)果:

擔(dān)擔(dān)面

如果在get() 方法內(nèi)有兩個(gè)參數(shù),則表示傳回區(qū)間選項(xiàng),第一個(gè)參數(shù)是區(qū)間的起始索引項(xiàng),第二個(gè)參數(shù)是區(qū)間的結(jié)束索引項(xiàng),傳回的值用元組方式傳回

例子:

import tkinter
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
print(listbox1.get(1, 3))
root.mainloop()

運(yùn)行結(jié)果:

('擔(dān)擔(dān)面', '炸醬面', '面窩')

傳回所選取項(xiàng)目的索引 curselection()

注意!注意!是索引,不是索引項(xiàng)

例子:

import tkinter
def show():
    index = listbox1.curselection()
    print(index)
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
button = tkinter.Button(root, text='print', command=show)
button.pack()
root.mainloop()

運(yùn)行結(jié)果:

我們可以結(jié)合get() 方法使用

例子:

def show():
    index = listbox1.curselection()
    for i in index:
        print(listbox1.get(i))

運(yùn)行結(jié)果:

檢查指定索引項(xiàng)是否被選取 selection_includes()

如果指定索引項(xiàng)被選取會(huì)傳回True,否則傳回False

例子:

import tkinter
def show():
    # 檢查第二個(gè)選項(xiàng)有無(wú)被選取
    print(listbox1.select_includes(1))
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){', '混沌', '糊湯粉', '餃子', '豆皮', '牛肉面', '湯圓']
# 建立listbox1
listbox1 = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
listbox1.pack(padx=5, pady=5)
# 插入的位置與信息
for food in foods:
    listbox1.insert(tkinter.END, food)
button = tkinter.Button(root, text='print', command=show)
button.pack()
root.mainloop()

運(yùn)行結(jié)果:

Listbox與事件綁定

虛擬綁定應(yīng)用于單選

當(dāng)Listbox執(zhí)行選取操作時(shí)會(huì)產(chǎn)生<<ListboxSelection>>虛擬事件,可以由此設(shè)置事件處理程序

例子:

import tkinter
def show(event):
    # 取得事件對(duì)象object
    object = event.widget
    # 取得所選的項(xiàng)目索引
    index = object.curselection()
    # 由索引取得所選的項(xiàng)目,關(guān)聯(lián)到label中
    var.set(object.get(index))
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){']
# 顯示區(qū)
var = tkinter.StringVar()
label = tkinter.Label(root, textvariable=var)
label.pack(pady=5)
# 列表框
lb = tkinter.Listbox(root)
for i in foods:
    lb.insert(tkinter.END, i)
lb.bind("<<ListboxSelect>>", show)
lb.pack(pady=5)
root.mainloop()

運(yùn)行結(jié)果:

單擊Listbox中選項(xiàng)時(shí)會(huì)產(chǎn)生虛擬的<<ListboxSelection>>事件,此時(shí)可以觸發(fā)itemChanged()方法處理此事件

其實(shí)可以省略第四行,直接使用原先的Listbox對(duì)象也可以

例子:

def show(event):
    # 取得所選的項(xiàng)目索引
    index = lb.curselection()
    # 由索引取得所選的項(xiàng)目,關(guān)聯(lián)到label中
    var.set(lb.get(index))

運(yùn)行結(jié)果是一樣的

或者我們不使用虛擬綁定,直接簡(jiǎn)單粗魯?shù)氖褂脝螕暨x項(xiàng),也行

例子:

lb.bind("<Button-1>", show)

運(yùn)行結(jié)果是一樣的!

注意:這種方式pycharm會(huì)報(bào)錯(cuò),但是依舊可以運(yùn)行!

虛擬綁定應(yīng)用于多選

例子:

import tkinter
def show(event):
    object = event.widget
    indexs = object.curselection()
    for index in indexs:
        print(object.get(index))
    print('------------')
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){']
# 列表框
lb = tkinter.Listbox(root, selectmode=tkinter.EXTENDED)
for i in foods:
    lb.insert(tkinter.END, i)
lb.bind("<<ListboxSelect>>", show)
lb.pack(pady=5)
root.mainloop()

運(yùn)行結(jié)果:

活用加入和刪除項(xiàng)目

例子:

import tkinter
def add():
    varAdd = entry.get()
    if (len(varAdd.strip())) == 0:
        return
    listbox.insert(tkinter.END, varAdd)
    entry.delete(0, tkinter.END)
def delete():
    index = listbox.curselection()
    if len(index) == 0:
        return
    listbox.delete(index)
root = tkinter.Tk()
# 輸入框
entry = tkinter.Entry(root)
entry.grid(row=0, column=0, padx=5, pady=5)
# 增加按鈕
buttonAdd = tkinter.Button(root, text='增加', width=10, command=add)
buttonAdd.grid(row=0, column=1, padx=5, pady=5)
# 列表顯示框
listbox = tkinter.Listbox(root)
listbox.grid(row=1, column=0, padx=5, pady=5)
# 刪除按鈕
buttonDelete = tkinter.Button(root, text='刪除', width=10, command=delete)
buttonDelete.grid(row=1, column=1, padx=5, pady=5, sticky=tkinter.N)
root.mainloop()

運(yùn)行結(jié)果:

Listbox 項(xiàng)目的排序

例子:

import tkinter
def show():
    # 獲取復(fù)選框是否勾選的值,如果勾選,值為T(mén)rue
    if var.get():
        # 定義排序的變量
        rebBool = True
    else:
        rebBool = False
    # 把我們列表框的幾個(gè)值獲取并轉(zhuǎn)換成列表,方便排序
    listTem = list(listbox.get(0, tkinter.END))
    # 排序
    sortedList = sorted(listTem, reverse=rebBool)
    # 刪除之前存在的列表框的值
    listbox.delete(0, tkinter.END)
    # 重新插入我們排序好的列表框的值
    for i in sortedList:
        listbox.insert(tkinter.END, i)
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){']
listbox = tkinter.Listbox(root)
for food in foods:
    listbox.insert(tkinter.END, food)
listbox.pack(padx=10, pady=5)
# 創(chuàng)建排序按鈕
button = tkinter.Button(root, text='排序', command=show)
button.pack(side=tkinter.LEFT, padx=10, pady=5)
var = tkinter.BooleanVar()
cheakbutton = tkinter.Checkbutton(root, text='從大到小排序', variable=var)
cheakbutton.pack(side=tkinter.LEFT)
root.mainloop()

運(yùn)行結(jié)果:

拖拽 Listbox 中的項(xiàng)目

例子:

import tkinter
# 處理單擊選項(xiàng)
def show(event):
    # nearest可以傳回最接近y坐標(biāo)在Listbox的索引
    # 傳回目前選項(xiàng)的索引
    listbox.index = listbox.nearest(event.y)
# 處理拖拽選項(xiàng)
def showInfo(event):
    # 獲取目前選項(xiàng)的新索引
    newIndex = listbox.nearest(event.y)
    # 判斷,如果向上拖拽
    if newIndex < listbox.index:
        # 獲取新位置的內(nèi)容
        x = listbox.get(newIndex)
        # 刪除新內(nèi)容
        listbox.delete(newIndex)
        # 將新內(nèi)容插入,相當(dāng)于插入我們移動(dòng)后的位置
        listbox.insert(newIndex + 1, x)
        # 把需要移動(dòng)的索引值變成我們所希望的索引,達(dá)到了移動(dòng)的目的
        listbox.index = newIndex
    elif newIndex > listbox.index:
        # 獲取新位置的內(nèi)容
        x = listbox.get(newIndex)
        # 刪除新內(nèi)容
        listbox.delete(newIndex)
        # 將新內(nèi)容插入,相當(dāng)于插入我們移動(dòng)后的位置
        listbox.insert(newIndex - 1, x)
        # 把需要移動(dòng)的索引值變成我們所希望的索引,達(dá)到了移動(dòng)的目的
        listbox.index = newIndex
root = tkinter.Tk()
foods = ['熱干面', '擔(dān)擔(dān)面', '炸醬面', '面窩', '油條', '豆?jié){']
listbox = tkinter.Listbox(root)
for food in foods:
    listbox.insert(tkinter.END, food)
    listbox.bind('<Button-1>', show)
    listbox.bind('<B1-Motion>', showInfo)
listbox.pack(padx=10, pady=5)
root.mainloop()

運(yùn)行結(jié)果:

程序中用到的方法

nearest(event.y)

上述代碼行,可以傳回最接近y坐標(biāo)在Listbox中的索引。當(dāng)有單擊操作時(shí)會(huì)觸發(fā)getIndex()方法,第4行可以傳回目前選項(xiàng)的索引,在拖拽過(guò)程中會(huì)觸發(fā)gragJob()方法,在第7行可以傳回新選項(xiàng)的索引,因?yàn)樵谕献н^(guò)程中,這個(gè)方法會(huì)不斷的被觸發(fā),所以至于被觸發(fā)多少次視移動(dòng)速度而定

假如移動(dòng)擔(dān)擔(dān)面,它的索引是1, 咱們向下拖拽,整個(gè)流程如下

  • 新索引位置為2
  • 獲得索引內(nèi)容 ‘面窩’,參照第27行
  • 刪除新內(nèi)容 ‘面窩’,參照第29行
  • 將 ‘面窩’ 內(nèi)容插入在索引1的位置,相當(dāng)于插入到我們移動(dòng)前的位置,參照第31行
  • 這個(gè)時(shí)候把新的索引位置傳給 ‘擔(dān)擔(dān)面’ ,根據(jù)索引來(lái)變換位置,變成了2,這樣就達(dá)到了移動(dòng)的目的了,參照第33行

滾動(dòng)條的設(shè)計(jì)

在默認(rèn)環(huán)境中Listbox 是沒(méi)有滾動(dòng)條的,但是如果選項(xiàng)太多,將造成部分選項(xiàng)無(wú)法顯示,可以將滾動(dòng)條Scrollbar控件加入Listbox中

注:Scrollbar控件除了可以應(yīng)用在Listbox上,也可以應(yīng)用在Text和Canvas上

使用格式如下:

Scrollbar(父對(duì)象, options, ...)

參數(shù):

  • 第一個(gè)參數(shù):父對(duì)象,表示這個(gè)滾動(dòng)條將建立在哪一個(gè)窗口內(nèi)
  • 第二個(gè)參數(shù):options,參數(shù)如下
參數(shù)含義
activebackground當(dāng)光標(biāo)經(jīng)過(guò)滾動(dòng)條時(shí),滾動(dòng)條和方向箭頭的顏色
bg 或 background當(dāng)光標(biāo)沒(méi)有經(jīng)過(guò)滾動(dòng)條時(shí),滾動(dòng)條和方向箭頭的顏色
bd 或 borderwidth邊界寬度默認(rèn)是兩個(gè)像素
command滾動(dòng)條移動(dòng)時(shí)所觸發(fā)的方法
cursor當(dāng)鼠標(biāo)光標(biāo)在滾動(dòng)條上時(shí)的形狀
highlightbackground當(dāng)滾動(dòng)條沒(méi)有獲得焦點(diǎn)時(shí)的顏色
highlightcolor當(dāng)滾動(dòng)條取得焦點(diǎn)時(shí)的顏色
highlightthinckness當(dāng)取得焦點(diǎn)時(shí)的厚度默認(rèn)是1
jump每次短距離的拖拽滾動(dòng)條時(shí)都會(huì)觸發(fā)command的方法如果設(shè)為1,則只有放開(kāi)鼠標(biāo)按鍵時(shí),才會(huì)觸發(fā)command的方法默認(rèn)是0
orient可設(shè)置HORIZONTAL/VERTICAL,分別是水平軸/垂直軸
repeatdelay可以設(shè)置按住滾動(dòng)條移動(dòng)的停滯時(shí)間單位是ms默認(rèn)是300ms
takefocus正常可以用Tab鍵的方式切換滾動(dòng)條成為焦點(diǎn)如果設(shè)置為0,則取消此設(shè)置
troughcolor滾動(dòng)條槽的顏色
width寬,單位是字符寬

例子:

import tkinter
root = tkinter.Tk()
sc = tkinter.Scrollbar(root)
sc.pack(side=tkinter.RIGHT, fill=tkinter.Y)
# 列表動(dòng),滾動(dòng)條跟著動(dòng)
lb = tkinter.Listbox(root, yscrollcommand=sc.set)
for i in range(50):
    lb.insert(tkinter.END, "列表 " + str(i))
lb.pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=True)
# 滾動(dòng)條動(dòng),列表跟著動(dòng)
sc.config(command=lb.yview)
root.mainloop()

運(yùn)行結(jié)果:

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 我的快遞一個(gè)月沒(méi)動(dòng)靜于是趕緊上線python快遞查詢系統(tǒng)

    我的快遞一個(gè)月沒(méi)動(dòng)靜于是趕緊上線python快遞查詢系統(tǒng)

    我的快遞在路上走了一個(gè)月還沒(méi)到,于是自己編寫(xiě)快遞查詢,文中通過(guò)實(shí)例代碼截圖的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-09-09
  • 利用Python代碼實(shí)現(xiàn)模擬動(dòng)態(tài)指針時(shí)鐘

    利用Python代碼實(shí)現(xiàn)模擬動(dòng)態(tài)指針時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了如何利用python和C++代碼實(shí)現(xiàn)模擬動(dòng)態(tài)指針時(shí)鐘,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • 利用python實(shí)現(xiàn)冒泡排序算法實(shí)例代碼

    利用python實(shí)現(xiàn)冒泡排序算法實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)冒泡排序算法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • python自動(dòng)化測(cè)試實(shí)例解析

    python自動(dòng)化測(cè)試實(shí)例解析

    這篇文章主要介紹了python自動(dòng)化測(cè)試實(shí)例,并對(duì)實(shí)例中的注意點(diǎn)進(jìn)行了簡(jiǎn)單的分析,需要的朋友可以參考下
    2014-09-09
  • python腳本框架webpy模板賦值實(shí)現(xiàn)

    python腳本框架webpy模板賦值實(shí)現(xiàn)

    這篇文章主要為大家介紹了python腳本框架webpy模板賦值實(shí)現(xiàn)示例過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • python中的elasticsearch_dsl查詢語(yǔ)句轉(zhuǎn)換成es查詢語(yǔ)句詳解

    python中的elasticsearch_dsl查詢語(yǔ)句轉(zhuǎn)換成es查詢語(yǔ)句詳解

    這篇文章主要介紹了python中的elasticsearch_dsl查詢語(yǔ)句轉(zhuǎn)換成es查詢語(yǔ)句詳解,ElasticSearch在實(shí)際生產(chǎn)里通常和LogStash,Kibana,F(xiàn)ileBeat一起構(gòu)成Elastic?Stack來(lái)使用,它是這些組件里面最核心的一個(gè),需要的朋友可以參考下
    2023-07-07
  • Python數(shù)組拼接np.concatenate實(shí)現(xiàn)過(guò)程

    Python數(shù)組拼接np.concatenate實(shí)現(xiàn)過(guò)程

    這篇文章主要介紹了Python數(shù)組拼接np.concatenate實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python字符串、整數(shù)、和浮點(diǎn)型數(shù)相互轉(zhuǎn)換實(shí)例

    Python字符串、整數(shù)、和浮點(diǎn)型數(shù)相互轉(zhuǎn)換實(shí)例

    今天小編就為大家分享一篇Python字符串、整數(shù)、和浮點(diǎn)型數(shù)相互轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Python Docx庫(kù)完美操作word文檔實(shí)例探究

    Python Docx庫(kù)完美操作word文檔實(shí)例探究

    這篇文章主要為大家介紹了Python Docx庫(kù)完美操作word文檔,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 基于Python實(shí)現(xiàn)nc批量轉(zhuǎn)tif格式

    基于Python實(shí)現(xiàn)nc批量轉(zhuǎn)tif格式

    做項(xiàng)目有時(shí)會(huì)運(yùn)用到netCDF格式的氣象數(shù)據(jù),而ArcGIS中需要用柵格影像進(jìn)行處理,對(duì)于較多的文件,ArcGIS一個(gè)個(gè)手動(dòng)轉(zhuǎn)換過(guò)于繁瑣,因此我們采用Python進(jìn)行轉(zhuǎn)換,下面就是Python實(shí)現(xiàn)nc批量轉(zhuǎn)tif格式的示例代碼,希望對(duì)你有所幫助
    2022-08-08

最新評(píng)論