一、參數說明
| 參數 | 作用 |
|---|---|
| background (bg) | 設置背景顏色 |
| borderwidth (bd) | 指定 Listbox 的邊框寬度,通常是 2 像素 |
| cursor | 指定當鼠標在 Listbox 上飄過的時候的鼠標樣式 |
| exportselection | 選中的項目文本是否可以被復制到剪貼板, 默認值是 True |
| font | 指定 Listbox 中文本的字體 |
| foreground (fg) | 設置 Listbox 的文本顏色 |
| height | 設置 Listbox 顯示的行數(不是像素), 默認值是 10 |
| highlightbackground | 指定當 Listbox 沒有獲得焦點的時候高亮邊框的顏色 |
| highlightcolor | 指定高亮邊框的寬度, 默認值是 1 |
| listvariable | 指向一個 StringVar 類型的變量,該變量存放 Listbox 中所有的項目 |
| relief | 指定邊框樣式, 默認值是 "sunken" |
| selectbackground | 指定當某個項目被選中的時候背景顏色 |
| selectborderwidth | 指定當某個項目被選中的時候邊框的寬度 |
| selectforeground | 指定當某個項目被選中的時候文本顏色 |
| selectmode | "single"(單選) "browse"(也是單選,但拖動鼠標或通過方向鍵可以直接改變選項) "multiple"(多選)和 "extended"(也是多選,但需要同時按住 Shift 鍵或 Ctrl 鍵或拖拽鼠標實現) 默認是 "browse" |
| setgrid | 指定一個布爾類型的值,決定是否啟用網格控制, 默認值是 False |
| takefocus | 指定該組件是否接受輸入焦點(用戶可以通過 tab 鍵將焦點轉移上來), 默認值是 True |
| width | 設置 Listbox 的寬度(單位是文本單元), 默認值是 20 |
| xscrollcommand | 為 Listbox 組件添加一條水平滾動條 |
| yscrollcommand | 為 Listbox 組件添加一條垂直滾動條 |
ListBox方法列表:
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) 一樣
二、代碼示例
import tkinter as tk
window = tk.Tk()
# 設置窗口大小
winWidth = 600
winHeight = 400
# 獲取屏幕分辨率
screenWidth = window.winfo_screenwidth()
screenHeight = window.winfo_screenheight()
x = int((screenWidth - winWidth) / 2)
y = int((screenHeight - winHeight) / 2)
# 設置主窗口標題
window.title("ListBox參數說明")
# 設置窗口初始位置在屏幕居中
window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
# 設置窗口圖標
window.iconbitmap("./image/icon.ico")
# 設置窗口寬高固定
window.resizable(0, 0)
# 創建滾動條,置於窗口右側,y方向填充
scroll_bar = tk.Scrollbar(window)
scroll_bar.pack(side = tk.RIGHT, fill = tk.Y)
"""listbox 參數.
Valid resource names: background, bd, bg, borderwidth, cursor,
exportselection, fg, font, foreground, height, highlightbackground,
highlightcolor, highlightthickness, relief, selectbackground,
selectborderwidth, selectforeground, selectmode, setgrid, takefocus,
width, xscrollcommand, yscrollcommand, listvariable."""
def com(e,b):
print(e, b)
var = tk.StringVar()
var.set("yy yang haha 1 2 3 4 5 7 8 0")
list_box = tk.Listbox(window, selectmode=tk.SINGLE, listvariable = var, yscrollcommand = scroll_bar.set)
list_box.pack(fill=tk.X)
scroll_bar.config(command=list_box.yview)
def delete():
list_box.delete(0, 1)
def choice():
# 獲取當前選擇的列表索引
v = list_box.curselection()
print(v) # (8,)
tk.Button(window, text="刪除", command=delete).pack()
tk.Button(window, text="選擇", command=choice).pack()
window.mainloop()
三、效果圖

