Tkinter (09) 列表框部件 Listbox

Jason990420發表於2020-07-24

列表框部件的建立及其選項

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 的大小為部件高度,正值向下,負值向上

範例視窗及程式碼

Tkinter (09) 列表框部件 Listbox

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 協議》,轉載必須註明作者和本文連結

Jason Yang

相關文章