Tkinter 之ListBox列表標簽


一、參數說明

參數 作用
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()

 

三、效果圖

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM