Python中Tkinter組件Listbox的具體使用
Listbox(列表框)組件用于顯示一個選擇列表。Listbox 只能包含文本項目,并且所有的項目都需要使用相同的字體和顏色。根據(jù)組件的配置,用戶可以從列表中選擇一個或多個選項。
何時使用 Listbox 組件?
Listbox 組件通常被用于顯示一組文本選項,Listbox 組件跟 Checkbutton 和 Radiobutton 組件類似,不過 Listbox 是以列表的形式來提供選項的(后兩個是通過按鈕的形式)。
用法
當(dāng)你創(chuàng)建一個 Listbox 組件的時候,它是空的,所以第一件要做的事就是添加一行或多行文本進去。我們使用 insert() 方法添加文本,該方法有兩個參數(shù):第一個參數(shù)是插入的索引號,第二個參數(shù)是插入的字符串。索引號通常是項目的序號(0 是列表中第一項的序號)。
不過你也可以使用一些特殊的索引號:比如 ACTIVE 表示選中的項目(如果 Listbox 允許多選,那么它表示最后一個被選中的項目);又如 END 表示 Listbox 的最后一行,所以當(dāng)要插入一個項目到列表時可以使用 END:
import tkinter as tk master = tk.Tk() # 創(chuàng)建一個空列表 theLB = tk.Listbox(master) theLB.pack() # 往列表里添加數(shù)據(jù) for item in ["雞蛋", "鴨蛋", "鵝蛋", "李狗蛋"]: theLB.insert("end", item) master.mainloop()
使用 delete() 方法刪除列表中的項目,最常用的操作是刪除列表中的所有項目(更新列表時你需要做的事兒):
listbox.delete(0, "end") listbox.insert("end", newitem) #插入新的項目
當(dāng)然你也可以刪除指定的項目,下邊例子使用一個獨立按鈕來刪除 ACTIVE 狀態(tài)的項目:
import tkinter as tk master = tk.Tk() # 創(chuàng)建一個空列表 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 選項提供了四種不同的選擇模式:"single"(單選)、"browse"(也是單選,但拖動鼠標(biāo)或通過方向鍵可以直接改變選項)、"multiple"(多選)和 "extended"(也是多選,但需要同時按住 Shift 鍵或 Ctrl 鍵或拖拽鼠標(biāo)實現(xiàn))。默認(rèn)是 "browse"。
參數(shù)
Listbox(master=None, **options) (class)
master -- 父組件
**options -- 組件選項,下方表格詳細(xì)列舉了各個選項的具體含義和用法:
選項 | 含義 |
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 上飄過的時候的鼠標(biāo)樣式 2. 默認(rèn)值由系統(tǒng)指定 |
exportselection | 1. 指定選中的項目文本是否可以被復(fù)制到剪貼板 2. 默認(rèn)值是 True 3. 可以修改為 False 表示不允許復(fù)制項目文本 |
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 沒有獲得焦點的時候高亮邊框的顏色 2. 默認(rèn)值由系統(tǒng)指定,通常是標(biāo)準(zhǔn)背景顏色 |
highlightcolor | 1. 指定當(dāng) Listbox 獲得焦點的時候高亮邊框的顏色 2. 默認(rèn)值由系統(tǒng)指定 |
highlightthickness | 1. 指定高亮邊框的寬度 2. 默認(rèn)值是 1 |
listvariable | 1. 指向一個 StringVar 類型的變量,該變量存放 Listbox 中所有的項目 2. 在 StringVar 類型的變量中,用空格分隔每個項目,例如 var.set("雞蛋 鴨蛋 鵝蛋 李狗蛋") |
relief | 1. 指定邊框樣式 2. 默認(rèn)值是 "sunken" |
selectbackground | 1. 指定當(dāng)某個項目被選中的時候背景顏色 2. 默認(rèn)值由系統(tǒng)指定 |
selectborderwidth | 1. 指定當(dāng)某個項目被選中的時候邊框的寬度 2. 默認(rèn)是由 selectbackground 指定的顏色填充,沒有邊框 3. 如果設(shè)置了此選項,Listbox 的每一項會相應(yīng)變大,被選中項為 "raised" 樣式 |
selectforeground | 1. 指定當(dāng)某個項目被選中的時候文本顏色 2. 默認(rèn)值由系統(tǒng)指定 |
selectmode | 1. 決定選擇的模式 2. 四種不同的選擇模式:"single"(單選)、"browse"(也是單選,但拖動鼠標(biāo)或通過方向鍵可以直接改變選項)、"multiple"(多選)和 "extended"(也是多選,但需要同時按住 Shift 鍵或 Ctrl 鍵或拖拽鼠標(biāo)實現(xiàn)) 3. 默認(rèn)是 "browse" |
setgrid | 1. 指定一個布爾類型的值,決定是否啟用網(wǎng)格控制 2. 默認(rèn)值是 False |
takefocus | 1. 指定該組件是否接受輸入焦點(用戶可以通過 tab 鍵將焦點轉(zhuǎn)移上來) 2. 默認(rèn)值是 True |
width | 1. 設(shè)置 Listbox 的寬度(單位是文本單元) 2. 文本單元是英文字母的平均寬度(所以如果該選項設(shè)置為 2,那么是無法容納"ww"這兩個寬度大于平均寬度的字母的) 3. 默認(rèn)值是 20 |
xscrollcommand | 1. 為 Listbox 組件添加一條水平滾動條 2. 將此選項與 Scrollbar 組件相關(guān)聯(lián)即可 |
yscrollcommand | 1. 為 Listbox 組件添加一條垂直滾動條 2. 將此選項與 Scrollbar 組件相關(guān)聯(lián)即可 |
方法
activate(index)
-- 將給定索引號對應(yīng)的選項激活(在其文本下方畫一條下劃線)
bbox(index)
-- 返回給定索引號對應(yīng)的選項的邊框
-- 返回值是一個以像素為單位的 4 元祖表示邊框:(xoffset, yoffset, width, height)
-- xoffset 和 yoffset 表示距離左上角的偏移位置
-- 返回的 width 是文本的實際寬度(像素為單位)
-- 如果指向的選項是不可見的,那么返回值是 None
curselection()
-- 返回一個元組,包含被選中的選項的序號(從 0 開始)
-- 如果沒有選中任何選項,返回一個空元組
delete(first, last=None)
-- 刪除參數(shù) first 到 last 范圍內(nèi)(包含 first 和 last)的所有選項
-- 如果忽略 last 參數(shù),表示刪除 first 參數(shù)指定的選項
get(first, last=None)
-- 返回一個元組,包含參數(shù) first 到 last 范圍內(nèi)(包含 first 和 last)的所有選項的文本
-- 如果忽略 last 參數(shù),表示返回 first 參數(shù)指定的選項的文本
index(index)
-- 返回與 index 參數(shù)相應(yīng)的選項的序號(例如 lb.index("end"))
insert(index, *elements)
-- 添加一個或多個項目到 Listbox 中
-- 使用 lb.insert("end") 添加新選項到末尾
itemcget(index, option)
-- 獲得 index 參數(shù)指定的項目對應(yīng)的選項(由 option 參數(shù)指定)
itemconfig(index, **options)
-- 設(shè)置 index 參數(shù)指定的項目對應(yīng)的選項(由可變參數(shù) **option 指定)
nearest(y)
-- 返回與給定參數(shù) y 在垂直坐標(biāo)上最接近的項目的序號
scan_dragto(x, y)
-- 見下方 scan_mark(x, y)
scan_mark(x, y)
-- 使用這種方式來實現(xiàn) Listbox 內(nèi)容的滾動
-- 需要將鼠標(biāo)按鈕事件及當(dāng)前鼠標(biāo)位置綁定到 scan_mark(x, y) 方法,然后再將 <motion> 事件及當(dāng)前鼠標(biāo)位置綁定到 scan_dragto(x, y) 方法,就可以實現(xiàn) Listbox 在當(dāng)前位置和 sacn_mack(x, y) 指定的位置 (x, y) 之間滾動
see(index)
-- 調(diào)整列表框的位置,使得 index 參數(shù)指定的選項是可見的
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ù)的位置下一個錨點,此后你就可以通過特殊索引 "anchor" 訪問
selection_clear(first, last=None)
-- 取消參數(shù) first 到 last 范圍內(nèi)(包含 first 和 last)選項的選中狀態(tài)
-- 如果忽略 last 參數(shù),則只取消 first 參數(shù)指定選項的選中狀態(tài)
selection_includes(index)
-- 返回 index 參數(shù)指定的選項的選中狀態(tài)
-- 返回 1 表示選中,返回 0 表示未選中
selection_set(first, last=None)
-- 設(shè)置參數(shù) first 到 last 范圍內(nèi)(包含 first 和 last)選項為選中狀態(tài)
-- 如果忽略 last 參數(shù),則只設(shè)置 first 參數(shù)指定選項為選中狀態(tài)
size()
-- 返回 Listbox 組件中選項的數(shù)量
xview(*args)
-- 該方法用于在水平方向上滾動 Listbox 組件的內(nèi)容,一般通過綁定 Scollbar 組件的 command 選項來實現(xiàn)(具體操作參考:Scrollbar)
-- 如果第一個參數(shù)是 "moveto",則第二個參數(shù)表示滾動到指定的位置:0.0 表示最左端,1.0 表示最右端
--如果第一個參數(shù)是 "scroll",則第二個參數(shù)表示滾動的數(shù)量,第三個參數(shù)表示滾動的單位(可以是 "units" 或 "pages"),例如:xview("scroll", 3, "pages")表示向右滾動三行
xview_moveto(fraction)
-- 跟 xview("moveto", fraction) 一樣
xview_scroll(number, what)
-- 跟 xview("scroll", number, what) 一樣
yview(*args)
-- 該方法用于在垂直方向上滾動 Listbox 組件的內(nèi)容,一般通過綁定 Scollbar 組件的 command 選項來實現(xiàn)(具體操作參考:Scrollbar)
-- 如果第一個參數(shù)是 "moveto",則第二個參數(shù)表示滾動到指定的位置:0.0 表示最頂端,1.0 表示最底端
-- 如果第一個參數(shù)是 "scroll",則第二個參數(shù)表示滾動的數(shù)量,第三個參數(shù)表示滾動的單位(可以是 "units" 或 "pages"),例如:yview("scroll", 3, "pages") 表示向下滾動三頁
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python利用hashlib實現(xiàn)文件MD5碼的批量存儲
這篇文章主要為大家詳細(xì)介紹了如何用Python和hashlib實現(xiàn)文件MD5碼的批量存儲功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2023-05-05在Django的模板中使用認(rèn)證數(shù)據(jù)的方法
這篇文章主要介紹了在Django的模板中使用認(rèn)證數(shù)據(jù)的方法,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下2015-07-07對python中的iter()函數(shù)與next()函數(shù)詳解
今天小編就為大家分享一篇對python中的iter()函數(shù)與next()函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10