列表框部件的建立及其選項
import tkinter as tk
parent = tk.Tk()
w = tk.Listbox(parent, option, ...)
選項 | 說明 |
---|---|
activestyle | active 行的樣式, ‘underline’ (內定, 底線), ‘dotbox’ (點線框), ‘none’ (無) |
bg or background | 背景顏色 |
bd or borderwidth | 外框寛度,內定為 2 |
cursor | 在部件上方時,滑鼠的圖樣 |
disabledforeground | disabled 時,前景顏色 |
exportselection | 文字可否複製到剪貼簿 0/1 |
font | 文字字型 |
fg or foreground | 前景顏色 |
height | 行數, 內定為 10 |
highlightbackground | 非聚焦時的聚焦顏色 |
highlightcolor | 聚焦時的聚焦顏色 |
highlightthickness | 聚焦厚度,內定 1, 0 則無 |
listvariable | StringVar 一個字串變數, 內容為 tuple 字串, 如 “(‘v0’, ‘v1’, …)” |
relief | 外框花樣,內定為 SUNKEN |
selectbackground | 被選擇文字的背景顏色 |
selectborderwidth | 被選擇文字的外框寛度 |
selectforeground | 被選擇文字的前景顏色 |
selectmode | 可選擇的行數及拖弋效果, BROWSE (內定, 單行可拖弋), SINGLE (單行, 拖弋無效), MULTIPLE (點選多選), EXTENDED (拖弋多選) |
state | NORMAL, DISABLED |
takefocus | TAB 鍵在部件是否會迴圈焦點 0/1 |
width | 部件字寛,內定為 20 個標準字寛 |
xscrollcommand | 水平滾動條 scrollbar.set () 方法 |
yscrollcommand | 垂直滾動條 scrollbar.set () 方法 |
- 整數值, 從 0 開始, 為索引值
- END 指最後一項
- ACTIVE 最被選擇的行
- ANCHOR 指定的定位行
- '@x, y' 參考點 (x, y) 為對應部件左上角的座標點, 指最接近該點的行.
方法 & 說明 |
---|
activate(index) 選擇某行 |
bbox(index) 返回某行所在的位置 (左, 上, 寬, 高), 看不見則返回 None, 部份看見會全部返回 |
curselection() 返回目前所有的選項 tuple |
delete(first, last=None) 刪除第 first 行, 或 first 到 last (含) 行 |
get(first, last=None) 返回最接近第 first 行的內容, 或 first 到 last (含) 行的內容 tuple |
index(i) 可能的話, 第 i 行顯示在可見的第一行 |
insert(index, *elements) 新增多行在 index 之前 |
itemcget(index, option) 返回第 index 行的該選項值, 無則返回 None |
itemconfig(index, option=value, …) 設定第index 行的選項值, background(背景顏色)/foreground(前景顏色)/selectbackground(被選擇文字的背景顏色)/selectforeground(被選擇文字的前景顏色) |
nearest(y) 返回最接近 y 座標, 可見行的索引值 |
scan_dragto(x, y) 滑鼠鍵按下事件處理程式中已標記位置時, 滑鼠滾動事件處理程式拖弋捲動部件,(x, y)為位置 |
scan_mark(x, y) 滑鼠鍵按下事件處理程式中標記位置 (x, y) |
see(index) 調整列表, 使第 index 可見 |
selection_anchor(index) 設定一個行引定位在 index, 以作為未來參考使用 ANCHOR |
selection_clear(first, last=None) 去除first(到含last)行的選擇 |
selection_includes(index) 第index行是否已選 |
selection_set(first, last=None) 選擇first(到含last)行 |
size() 部件中行總數 |
xview() 供水平滾動條 scrollbar 選項 command 使用 |
xview_moveto(fraction) 移動水平滾動條, fraction 為 0 ~ 1 |
xview_scroll(number, what) 水平滾動畫布 number 個單位,單位 what 為 UNITS 或 PAGES, UNITS 為字寛,PAGES 的大小為部件寛度,正值向右,負值向左 |
yview() 供垂直滾動條 scrollbar 選項 command 使用 |
yview_moveto(fraction) 移動垂直滾動條, fraction 為 0 ~ 1 |
yview_scroll(number, what) 水平滾動畫布 number 個單位,單位 what 為 UNITS 或 PAGES, UNITS 為行,PAGES 的大小為部件高度,正值向下,負值向上 |
範例視窗及程式碼
import tkinter as tk
root = tk.Tk()
root.wm_title("Listbox Demo")
font = ('Courier New', 16, 'bold')
elements = ('List for House', 'List for Friend', 'List for Cash', 'List for Car',
'List for Motorcycle', 'List for Boat', 'List for Airplane')
x_scrollbar = tk.Scrollbar(orient=tk.HORIZONTAL)
x_scrollbar.grid(row=1, column=0, sticky=tk.E+tk.W)
y_scrollbar = tk.Scrollbar(orient=tk.VERTICAL)
y_scrollbar.grid(row=0, column=1, sticky=tk.N+tk.S)
list_box = tk.Listbox(root, font=font, selectmode=tk.MULTIPLE,
width=15, height=5, activestyle='dotbox', xscrollcommand=x_scrollbar.set,
yscrollcommand=y_scrollbar.set)
list_box.insert(tk.END, *elements)
list_box.grid(row=0, column=0, sticky=tk.N+tk.S+tk.E+tk.W)
x_scrollbar['command'] = list_box.xview
y_scrollbar['command'] = list_box.yview
root.mainloop()
本作品採用《CC 協議》,轉載必須註明作者和本文連結