Python中Tkinter組件Listbox的具體使用
Listbox(列表框)組件用於顯示一個選擇列表。Listbox 隻能包含文本項目,並且所有的項目都需要使用相同的字體和顏色。根據組件的配置,用戶可以從列表中選擇一個或多個選項。
何時使用 Listbox 組件?
Listbox 組件通常被用於顯示一組文本選項,Listbox 組件跟 Checkbutton 和 Radiobutton 組件類似,不過 Listbox 是以列表的形式來提供選項的(後兩個是通過按鈕的形式)。
用法
當你創建一個 Listbox 組件的時候,它是空的,所以第一件要做的事就是添加一行或多行文本進去。我們使用 insert() 方法添加文本,該方法有兩個參數:第一個參數是插入的索引號,第二個參數是插入的字符串。索引號通常是項目的序號(0 是列表中第一項的序號)。
不過你也可以使用一些特殊的索引號:比如 ACTIVE 表示選中的項目(如果 Listbox 允許多選,那麼它表示最後一個被選中的項目);又如 END 表示 Listbox 的最後一行,所以當要插入一個項目到列表時可以使用 END:
import tkinter as tk master = tk.Tk() # 創建一個空列表 theLB = tk.Listbox(master) theLB.pack() # 往列表裡添加數據 for item in ["雞蛋", "鴨蛋", "鵝蛋", "李狗蛋"]: theLB.insert("end", item) master.mainloop()
使用 delete() 方法刪除列表中的項目,最常用的操作是刪除列表中的所有項目(更新列表時你需要做的事兒):
listbox.delete(0, "end") listbox.insert("end", newitem) #插入新的項目
當然你也可以刪除指定的項目,下邊例子使用一個獨立按鈕來刪除 ACTIVE 狀態的項目:
import tkinter as tk master = tk.Tk() # 創建一個空列表 theLB = tk.Listbox(master) theLB.pack() # 往列表裡添加數據 for item in ["雞蛋", "鴨蛋", "鵝蛋", "李狗蛋"]: theLB.insert("end", item) theButton = tk.Button(master, text="刪除", command=lambda x=theLB: x.delete("active")) theButton.pack() master.mainloop()
Listbox 組件根據 selectmode 選項提供瞭四種不同的選擇模式:"single"(單選)、"browse"(也是單選,但拖動鼠標或通過方向鍵可以直接改變選項)、"multiple"(多選)和 "extended"(也是多選,但需要同時按住 Shift 鍵或 Ctrl 鍵或拖拽鼠標實現)。默認是 "browse"。
參數
Listbox(master=None, **options) (class)
master — 父組件
**options — 組件選項,下方表格詳細列舉瞭各個選項的具體含義和用法:
選項 | 含義 |
background | 1. 設置背景顏色 2. 默認值由系統指定 |
bg | 跟 background 一樣 |
borderwidth | 1. 指定 Listbox 的邊框寬度 2. 默認值由系統指定,通常是 2 像素 |
bd | 跟 borderwidth 一樣 |
cursor | 1. 指定當鼠標在 Listbox 上飄過的時候的鼠標樣式 2. 默認值由系統指定 |
exportselection | 1. 指定選中的項目文本是否可以被復制到剪貼板 2. 默認值是 True 3. 可以修改為 False 表示不允許復制項目文本 |
font | 1. 指定 Listbox 中文本的字體 2. 默認值由系統指定 |
foreground | 1. 設置 Listbox 的文本顏色 2. 默認值由系統指定 |
fg | 跟 foreground 一樣 |
height | 1. 設置 Listbox 顯示的行數(不是像素) 2. 默認值是 10 |
highlightbackground | 1. 指定當 Listbox 沒有獲得焦點的時候高亮邊框的顏色 2. 默認值由系統指定,通常是標準背景顏色 |
highlightcolor | 1. 指定當 Listbox 獲得焦點的時候高亮邊框的顏色 2. 默認值由系統指定 |
highlightthickness | 1. 指定高亮邊框的寬度 2. 默認值是 1 |
listvariable | 1. 指向一個 StringVar 類型的變量,該變量存放 Listbox 中所有的項目 2. 在 StringVar 類型的變量中,用空格分隔每個項目,例如 var.set("雞蛋 鴨蛋 鵝蛋 李狗蛋") |
relief | 1. 指定邊框樣式 2. 默認值是 "sunken" |
selectbackground | 1. 指定當某個項目被選中的時候背景顏色 2. 默認值由系統指定 |
selectborderwidth | 1. 指定當某個項目被選中的時候邊框的寬度 2. 默認是由 selectbackground 指定的顏色填充,沒有邊框 3. 如果設置瞭此選項,Listbox 的每一項會相應變大,被選中項為 "raised" 樣式 |
selectforeground | 1. 指定當某個項目被選中的時候文本顏色 2. 默認值由系統指定 |
selectmode | 1. 決定選擇的模式 2. 四種不同的選擇模式:"single"(單選)、"browse"(也是單選,但拖動鼠標或通過方向鍵可以直接改變選項)、"multiple"(多選)和 "extended"(也是多選,但需要同時按住 Shift 鍵或 Ctrl 鍵或拖拽鼠標實現) 3. 默認是 "browse" |
setgrid | 1. 指定一個佈爾類型的值,決定是否啟用網格控制 2. 默認值是 False |
takefocus | 1. 指定該組件是否接受輸入焦點(用戶可以通過 tab 鍵將焦點轉移上來) 2. 默認值是 True |
width | 1. 設置 Listbox 的寬度(單位是文本單元) 2. 文本單元是英文字母的平均寬度(所以如果該選項設置為 2,那麼是無法容納"ww"這兩個寬度大於平均寬度的字母的) 3. 默認值是 20 |
xscrollcommand | 1. 為 Listbox 組件添加一條水平滾動條 2. 將此選項與 Scrollbar 組件相關聯即可 |
yscrollcommand | 1. 為 Listbox 組件添加一條垂直滾動條 2. 將此選項與 Scrollbar 組件相關聯即可 |
方法
activate(index)
— 將給定索引號對應的選項激活(在其文本下方畫一條下劃線)
bbox(index)
— 返回給定索引號對應的選項的邊框
— 返回值是一個以像素為單位的 4 元祖表示邊框:(xoffset, yoffset, width, height)
— xoffset 和 yoffset 表示距離左上角的偏移位置
— 返回的 width 是文本的實際寬度(像素為單位)
— 如果指向的選項是不可見的,那麼返回值是 None
curselection()
— 返回一個元組,包含被選中的選項的序號(從 0 開始)
— 如果沒有選中任何選項,返回一個空元組
delete(first, last=None)
— 刪除參數 first 到 last 范圍內(包含 first 和 last)的所有選項
— 如果忽略 last 參數,表示刪除 first 參數指定的選項
get(first, last=None)
— 返回一個元組,包含參數 first 到 last 范圍內(包含 first 和 last)的所有選項的文本
— 如果忽略 last 參數,表示返回 first 參數指定的選項的文本
index(index)
— 返回與 index 參數相應的選項的序號(例如 lb.index("end"))
insert(index, *elements)
— 添加一個或多個項目到 Listbox 中
— 使用 lb.insert("end") 添加新選項到末尾
itemcget(index, option)
— 獲得 index 參數指定的項目對應的選項(由 option 參數指定)
itemconfig(index, **options)
— 設置 index 參數指定的項目對應的選項(由可變參數 **option 指定)
nearest(y)
— 返回與給定參數 y 在垂直坐標上最接近的項目的序號
scan_dragto(x, y)
— 見下方 scan_mark(x, y)
scan_mark(x, y)
— 使用這種方式來實現 Listbox 內容的滾動
— 需要將鼠標按鈕事件及當前鼠標位置綁定到 scan_mark(x, y) 方法,然後再將 <motion> 事件及當前鼠標位置綁定到 scan_dragto(x, y) 方法,就可以實現 Listbox 在當前位置和 sacn_mack(x, y) 指定的位置 (x, y) 之間滾動
see(index)
— 調整列表框的位置,使得 index 參數指定的選項是可見的
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 參數的位置下一個錨點,此後你就可以通過特殊索引 "anchor" 訪問
selection_clear(first, last=None)
— 取消參數 first 到 last 范圍內(包含 first 和 last)選項的選中狀態
— 如果忽略 last 參數,則隻取消 first 參數指定選項的選中狀態
selection_includes(index)
— 返回 index 參數指定的選項的選中狀態
— 返回 1 表示選中,返回 0 表示未選中
selection_set(first, last=None)
— 設置參數 first 到 last 范圍內(包含 first 和 last)選項為選中狀態
— 如果忽略 last 參數,則隻設置 first 參數指定選項為選中狀態
size()
— 返回 Listbox 組件中選項的數量
xview(*args)
— 該方法用於在水平方向上滾動 Listbox 組件的內容,一般通過綁定 Scollbar 組件的 command 選項來實現(具體操作參考:Scrollbar)
— 如果第一個參數是 "moveto",則第二個參數表示滾動到指定的位置:0.0 表示最左端,1.0 表示最右端
–如果第一個參數是 "scroll",則第二個參數表示滾動的數量,第三個參數表示滾動的單位(可以是 "units" 或 "pages"),例如:xview("scroll", 3, "pages")表示向右滾動三行
xview_moveto(fraction)
— 跟 xview("moveto", fraction) 一樣
xview_scroll(number, what)
— 跟 xview("scroll", number, what) 一樣
yview(*args)
— 該方法用於在垂直方向上滾動 Listbox 組件的內容,一般通過綁定 Scollbar 組件的 command 選項來實現(具體操作參考:Scrollbar)
— 如果第一個參數是 "moveto",則第二個參數表示滾動到指定的位置:0.0 表示最頂端,1.0 表示最底端
— 如果第一個參數是 "scroll",則第二個參數表示滾動的數量,第三個參數表示滾動的單位(可以是 "units" 或 "pages"),例如:yview("scroll", 3, "pages") 表示向下滾動三頁
yview_moveto(fraction)
— 跟 yview("moveto", fraction) 一樣
yview_scroll(number, what)
— 跟 yview("scroll", number, what) 一樣
到此這篇關於Python中Tkinter組件Listbox的具體使用的文章就介紹到這瞭,更多相關Python Tkinter Listbox內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Tkinter 組件Scrollbar的具體使用
- Python tkinter 列表框Listbox屬性詳情
- Python 批量驗證和添加手機號碼為企業微信聯系人
- Python中的tkinter庫簡單案例詳解
- python基於Tkinter實現人員管理系統