Python中Tkinter組件Listbox的具體使用
Listbox(列表框)組件用于顯示一個(gè)選擇列表。Listbox 只能包含文本項(xiàng)目,并且所有的項(xiàng)目都需要使用相同的字體和顏色。根據(jù)組件的配置,用戶可以從列表中選擇一個(gè)或多個(gè)選項(xiàng)。
何時(shí)使用 Listbox 組件?
Listbox 組件通常被用于顯示一組文本選項(xiàng),Listbox 組件跟 Checkbutton 和 Radiobutton 組件類似,不過 Listbox 是以列表的形式來提供選項(xiàng)的(后兩個(gè)是通過按鈕的形式)。
用法
當(dāng)你創(chuàng)建一個(gè) Listbox 組件的時(shí)候,它是空的,所以第一件要做的事就是添加一行或多行文本進(jìn)去。我們使用 insert() 方法添加文本,該方法有兩個(gè)參數(shù):第一個(gè)參數(shù)是插入的索引號(hào),第二個(gè)參數(shù)是插入的字符串。索引號(hào)通常是項(xiàng)目的序號(hào)(0 是列表中第一項(xiàng)的序號(hào))。
不過你也可以使用一些特殊的索引號(hào):比如 ACTIVE 表示選中的項(xiàng)目(如果 Listbox 允許多選,那么它表示最后一個(gè)被選中的項(xiàng)目);又如 END 表示 Listbox 的最后一行,所以當(dāng)要插入一個(gè)項(xiàng)目到列表時(shí)可以使用 END:
import tkinter as tk
master = tk.Tk()
# 創(chuàng)建一個(gè)空列表
theLB = tk.Listbox(master)
theLB.pack()
# 往列表里添加數(shù)據(jù)
for item in ["雞蛋", "鴨蛋", "鵝蛋", "李狗蛋"]:
theLB.insert("end", item)
master.mainloop()
使用 delete() 方法刪除列表中的項(xiàng)目,最常用的操作是刪除列表中的所有項(xiàng)目(更新列表時(shí)你需要做的事兒):
listbox.delete(0, "end")
listbox.insert("end", newitem) #插入新的項(xiàng)目當(dāng)然你也可以刪除指定的項(xiàng)目,下邊例子使用一個(gè)獨(dú)立按鈕來刪除 ACTIVE 狀態(tài)的項(xiàng)目:
import tkinter as tk
master = tk.Tk()
# 創(chuàng)建一個(gè)空列表
theLB = tk.Listbox(master)
theLB.pack()
# 往列表里添加數(shù)據(jù)
for item in ["雞蛋", "鴨蛋", "鵝蛋", "李狗蛋"]:
theLB.insert("end", item)
theButton = tk.Button(master, text="刪除", command=lambda x=theLB: x.delete("active"))
theButton.pack()
master.mainloop()

Listbox 組件根據(jù) selectmode 選項(xiàng)提供了四種不同的選擇模式:"single"(單選)、"browse"(也是單選,但拖動(dòng)鼠標(biāo)或通過方向鍵可以直接改變選項(xiàng))、"multiple"(多選)和 "extended"(也是多選,但需要同時(shí)按住 Shift 鍵或 Ctrl 鍵或拖拽鼠標(biāo)實(shí)現(xiàn))。默認(rèn)是 "browse"。
參數(shù)
Listbox(master=None, **options) (class)
master -- 父組件
**options -- 組件選項(xiàng),下方表格詳細(xì)列舉了各個(gè)選項(xiàng)的具體含義和用法:
| 選項(xiàng) | 含義 |
| background | 1. 設(shè)置背景顏色 2. 默認(rèn)值由系統(tǒng)指定 |
| bg | 跟 background 一樣 |
| borderwidth | 1. 指定 Listbox 的邊框?qū)挾?br />2. 默認(rèn)值由系統(tǒng)指定,通常是 2 像素 |
| bd | 跟 borderwidth 一樣 |
| cursor | 1. 指定當(dāng)鼠標(biāo)在 Listbox 上飄過的時(shí)候的鼠標(biāo)樣式 2. 默認(rèn)值由系統(tǒng)指定 |
| exportselection | 1. 指定選中的項(xiàng)目文本是否可以被復(fù)制到剪貼板 2. 默認(rèn)值是 True 3. 可以修改為 False 表示不允許復(fù)制項(xiàng)目文本 |
| font | 1. 指定 Listbox 中文本的字體 2. 默認(rèn)值由系統(tǒng)指定 |
| foreground | 1. 設(shè)置 Listbox 的文本顏色 2. 默認(rèn)值由系統(tǒng)指定 |
| fg | 跟 foreground 一樣 |
| height | 1. 設(shè)置 Listbox 顯示的行數(shù)(不是像素) 2. 默認(rèn)值是 10 |
| highlightbackground | 1. 指定當(dāng) Listbox 沒有獲得焦點(diǎn)的時(shí)候高亮邊框的顏色 2. 默認(rèn)值由系統(tǒng)指定,通常是標(biāo)準(zhǔn)背景顏色 |
| highlightcolor | 1. 指定當(dāng) Listbox 獲得焦點(diǎn)的時(shí)候高亮邊框的顏色 2. 默認(rèn)值由系統(tǒng)指定 |
| highlightthickness | 1. 指定高亮邊框的寬度 2. 默認(rèn)值是 1 |
| listvariable | 1. 指向一個(gè) StringVar 類型的變量,該變量存放 Listbox 中所有的項(xiàng)目 2. 在 StringVar 類型的變量中,用空格分隔每個(gè)項(xiàng)目,例如 var.set("雞蛋 鴨蛋 鵝蛋 李狗蛋") |
| relief | 1. 指定邊框樣式 2. 默認(rèn)值是 "sunken" |
| selectbackground | 1. 指定當(dāng)某個(gè)項(xiàng)目被選中的時(shí)候背景顏色 2. 默認(rèn)值由系統(tǒng)指定 |
| selectborderwidth | 1. 指定當(dāng)某個(gè)項(xiàng)目被選中的時(shí)候邊框的寬度 2. 默認(rèn)是由 selectbackground 指定的顏色填充,沒有邊框 3. 如果設(shè)置了此選項(xiàng),Listbox 的每一項(xiàng)會(huì)相應(yīng)變大,被選中項(xiàng)為 "raised" 樣式 |
| selectforeground | 1. 指定當(dāng)某個(gè)項(xiàng)目被選中的時(shí)候文本顏色 2. 默認(rèn)值由系統(tǒng)指定 |
| selectmode | 1. 決定選擇的模式 2. 四種不同的選擇模式:"single"(單選)、"browse"(也是單選,但拖動(dòng)鼠標(biāo)或通過方向鍵可以直接改變選項(xiàng))、"multiple"(多選)和 "extended"(也是多選,但需要同時(shí)按住 Shift 鍵或 Ctrl 鍵或拖拽鼠標(biāo)實(shí)現(xiàn)) 3. 默認(rèn)是 "browse" |
| setgrid | 1. 指定一個(gè)布爾類型的值,決定是否啟用網(wǎng)格控制 2. 默認(rèn)值是 False |
| takefocus | 1. 指定該組件是否接受輸入焦點(diǎn)(用戶可以通過 tab 鍵將焦點(diǎn)轉(zhuǎn)移上來) 2. 默認(rèn)值是 True |
| width | 1. 設(shè)置 Listbox 的寬度(單位是文本單元) 2. 文本單元是英文字母的平均寬度(所以如果該選項(xiàng)設(shè)置為 2,那么是無法容納"ww"這兩個(gè)寬度大于平均寬度的字母的) 3. 默認(rèn)值是 20 |
| xscrollcommand | 1. 為 Listbox 組件添加一條水平滾動(dòng)條 2. 將此選項(xiàng)與 Scrollbar 組件相關(guān)聯(lián)即可 |
| yscrollcommand | 1. 為 Listbox 組件添加一條垂直滾動(dòng)條 2. 將此選項(xiàng)與 Scrollbar 組件相關(guān)聯(lián)即可 |
方法
activate(index)
-- 將給定索引號(hào)對(duì)應(yīng)的選項(xiàng)激活(在其文本下方畫一條下劃線)
bbox(index)
-- 返回給定索引號(hào)對(duì)應(yīng)的選項(xiàng)的邊框
-- 返回值是一個(gè)以像素為單位的 4 元祖表示邊框:(xoffset, yoffset, width, height)
-- xoffset 和 yoffset 表示距離左上角的偏移位置
-- 返回的 width 是文本的實(shí)際寬度(像素為單位)
-- 如果指向的選項(xiàng)是不可見的,那么返回值是 None
curselection()
-- 返回一個(gè)元組,包含被選中的選項(xiàng)的序號(hào)(從 0 開始)
-- 如果沒有選中任何選項(xiàng),返回一個(gè)空元組
delete(first, last=None)
-- 刪除參數(shù) first 到 last 范圍內(nèi)(包含 first 和 last)的所有選項(xiàng)
-- 如果忽略 last 參數(shù),表示刪除 first 參數(shù)指定的選項(xiàng)
get(first, last=None)
-- 返回一個(gè)元組,包含參數(shù) first 到 last 范圍內(nèi)(包含 first 和 last)的所有選項(xiàng)的文本
-- 如果忽略 last 參數(shù),表示返回 first 參數(shù)指定的選項(xiàng)的文本
index(index)
-- 返回與 index 參數(shù)相應(yīng)的選項(xiàng)的序號(hào)(例如 lb.index("end"))
insert(index, *elements)
-- 添加一個(gè)或多個(gè)項(xiàng)目到 Listbox 中
-- 使用 lb.insert("end") 添加新選項(xiàng)到末尾
itemcget(index, option)
-- 獲得 index 參數(shù)指定的項(xiàng)目對(duì)應(yīng)的選項(xiàng)(由 option 參數(shù)指定)
itemconfig(index, **options)
-- 設(shè)置 index 參數(shù)指定的項(xiàng)目對(duì)應(yīng)的選項(xiàng)(由可變參數(shù) **option 指定)
nearest(y)
-- 返回與給定參數(shù) y 在垂直坐標(biāo)上最接近的項(xiàng)目的序號(hào)
scan_dragto(x, y)
-- 見下方 scan_mark(x, y)
scan_mark(x, y)
-- 使用這種方式來實(shí)現(xiàn) Listbox 內(nèi)容的滾動(dòng)
-- 需要將鼠標(biāo)按鈕事件及當(dāng)前鼠標(biāo)位置綁定到 scan_mark(x, y) 方法,然后再將 <motion> 事件及當(dāng)前鼠標(biāo)位置綁定到 scan_dragto(x, y) 方法,就可以實(shí)現(xiàn) Listbox 在當(dāng)前位置和 sacn_mack(x, y) 指定的位置 (x, y) 之間滾動(dòng)
see(index)
-- 調(diào)整列表框的位置,使得 index 參數(shù)指定的選項(xiàng)是可見的
select_anchor(index)
-- 與 selection_anchor(index) 相同,見下方解釋
select_clear(first, last=None)
-- 與 selection_clear(first, last=None) 相同,見下方解釋
select_includes(index)
-- 與 selection_includes(index) 相同,見下方解釋
select_set(first, last=None)
-- 與 selection_set(first, last=None) 相同,見下方解釋
selection_anchor(index)
-- 在 index 參數(shù)的位置下一個(gè)錨點(diǎn),此后你就可以通過特殊索引 "anchor" 訪問
selection_clear(first, last=None)
-- 取消參數(shù) first 到 last 范圍內(nèi)(包含 first 和 last)選項(xiàng)的選中狀態(tài)
-- 如果忽略 last 參數(shù),則只取消 first 參數(shù)指定選項(xiàng)的選中狀態(tài)
selection_includes(index)
-- 返回 index 參數(shù)指定的選項(xiàng)的選中狀態(tài)
-- 返回 1 表示選中,返回 0 表示未選中
selection_set(first, last=None)
-- 設(shè)置參數(shù) first 到 last 范圍內(nèi)(包含 first 和 last)選項(xiàng)為選中狀態(tài)
-- 如果忽略 last 參數(shù),則只設(shè)置 first 參數(shù)指定選項(xiàng)為選中狀態(tài)
size()
-- 返回 Listbox 組件中選項(xiàng)的數(shù)量
xview(*args)
-- 該方法用于在水平方向上滾動(dòng) Listbox 組件的內(nèi)容,一般通過綁定 Scollbar 組件的 command 選項(xiàng)來實(shí)現(xiàn)(具體操作參考:Scrollbar)
-- 如果第一個(gè)參數(shù)是 "moveto",則第二個(gè)參數(shù)表示滾動(dòng)到指定的位置:0.0 表示最左端,1.0 表示最右端
--如果第一個(gè)參數(shù)是 "scroll",則第二個(gè)參數(shù)表示滾動(dòng)的數(shù)量,第三個(gè)參數(shù)表示滾動(dòng)的單位(可以是 "units" 或 "pages"),例如:xview("scroll", 3, "pages")表示向右滾動(dòng)三行
xview_moveto(fraction)
-- 跟 xview("moveto", fraction) 一樣
xview_scroll(number, what)
-- 跟 xview("scroll", number, what) 一樣
yview(*args)
-- 該方法用于在垂直方向上滾動(dòng) Listbox 組件的內(nèi)容,一般通過綁定 Scollbar 組件的 command 選項(xiàng)來實(shí)現(xiàn)(具體操作參考:Scrollbar)
-- 如果第一個(gè)參數(shù)是 "moveto",則第二個(gè)參數(shù)表示滾動(dòng)到指定的位置:0.0 表示最頂端,1.0 表示最底端
-- 如果第一個(gè)參數(shù)是 "scroll",則第二個(gè)參數(shù)表示滾動(dòng)的數(shù)量,第三個(gè)參數(shù)表示滾動(dòng)的單位(可以是 "units" 或 "pages"),例如:yview("scroll", 3, "pages") 表示向下滾動(dòng)三頁
yview_moveto(fraction)
-- 跟 yview("moveto", fraction) 一樣
yview_scroll(number, what)
-- 跟 yview("scroll", number, what) 一樣
到此這篇關(guān)于Python中Tkinter組件Listbox的具體使用的文章就介紹到這了,更多相關(guān)Python Tkinter Listbox內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python 窗體(tkinter)下拉列表框(Combobox)實(shí)例
- python使用tkinter模塊實(shí)現(xiàn)文件選擇功能
- python圖形用戶界面tkinter之按鈕Button的使用說明
- Python使用Tkinter?GUI實(shí)現(xiàn)輸入驗(yàn)證功能
- Python Tkinter GUI編程實(shí)現(xiàn)Frame切換
- Python+Tkinter制作專屬圖形化界面
- Python wxPython庫使用wx.ListBox創(chuàng)建列表框示例
- wxPython中l(wèi)istbox用法實(shí)例詳解
- Python?tkinter?列表框Listbox屬性詳情
相關(guān)文章
詳解numpy.ndarray.reshape()函數(shù)的參數(shù)問題
這篇文章主要介紹了詳解numpy.ndarray.reshape()函數(shù)的參數(shù)問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
深入解析Python中函數(shù)的參數(shù)與作用域
這篇文章主要介紹了Python中函數(shù)的參數(shù)與作用域,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-03-03
Python?paddleocr快速使用及參數(shù)配置詳解
PaddleOCR是基于PaddlePaddle深度學(xué)習(xí)框架的開源OCR工具,但它提供了推理模型/訓(xùn)練模型/預(yù)訓(xùn)練模型,用戶可以直接使用推理模型進(jìn)行識(shí)別,也可以對(duì)訓(xùn)練模型或預(yù)訓(xùn)練模型進(jìn)行再訓(xùn)練,這篇文章主要介紹了Python?paddleocr快速使用及參數(shù)詳解,需要的朋友可以參考下2024-06-06
Django 響應(yīng)數(shù)據(jù)response的返回源碼詳解
這篇文章主要介紹了Django 響應(yīng)數(shù)據(jù)response的返回源碼詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08

