Python GUI 07—-Listbox
- 2020 年 1 月 12 日
- 筆記
Listbox為列表框控制項,它可以包含一個或多個文本項(text item),可以設置為單選或多選
1.創建一個Listbox,向其中添加三個item
from tkinter import * root = Tk() lb = Listbox(root) for item in ['python','tkinter','widget']: lb.insert(END,item) lb.pack() root.mainloop()
2.創建一個可以多選的Listbox,使用屬性selectmode
from tkinter import * # 依次點擊這三個item,均顯示為選中狀態。 # 屬性MULTIPLE允許多選,每次點擊item,它將改變自己的當前選狀態,與Checkbox有點相似 root = Tk() lb = Listbox(root,selectmode = MULTIPLE) for item in ['python','tkinter','widget']: lb.insert(END,item) lb.pack() root.mainloop()
3.將selectmode設置為BROWSE,使一次只能選中一個item
from tkinter import * #使用滑鼠進行拖動,可以看到選中的位置隨之變化。 # 與BROWSE相似 的為SINGLE,但不支援滑鼠移動選中位置。 root = Tk() lb = Listbox(root,selectmode = BROWSE) for item in ['python','tkinter','widget']: lb.insert(END,item) lb.pack() root.mainloop()
4.使用selectmode = EXPANDED使用Listbox來支援Shift鍵和Control鍵。
from tkinter import * root = Tk() lb = Listbox(root,selectmode = EXTENDED) for item in ['python','tkinter','widget']: lb.insert(END,item) lb.pack() root.mainloop()
5.刪除Listbox中的項,使用delete,這個函數也有兩個參數,第一個為開始的索引值;第二個為結束的索引值,如果不指定則只刪除第一個索引項。
from tkinter import * root = Tk() lb = Listbox(root) for i in range(10): lb.insert(END,str(i)) lb.delete(1,3) #1-3被刪除。lb.delete(0,END)會刪掉所有item lb.pack() root.mainloop()
6.圈選item
from tkinter import * root = Tk() lb = Listbox(root) for i in range(10): lb.insert(END,str(i)) lb.selection_set(6,9) #選擇第7個到第10個item lb.selection_clear(7,8) #取消圈選第8個和第9個 lb.pack() root.mainloop()
7.得到當前Listbox中的item個數
from tkinter import * root = Tk() lb = Listbox(root) for i in range(10): lb.insert(END,str(i)) lb.delete(3) #刪掉3 print (lb.size()) #輸出item的個數 lb.pack() root.mainloop()
8.返回指定索引的值
from tkinter import * root = Tk() lb = Listbox(root) for i in range(10): lb.insert(END,str(i*100)) print (lb.get(3)) #返回第4個數的值 print (lb.get(3,7)) #返回第4個到第8個的值(以turple的形式) lb.pack() root.mainloop()
9.返回當前返回的項的索引,不是item的值
from tkinter import * root = Tk() lb = Listbox(root) for i in range(10): lb.insert(END,str(i*100)) lb.selection_set(3,8) #圈選第4個到第9個item print (lb.curselection()) #返迴圈選的item的索引 lb.pack() root.mainloop()
10 判斷 一個項是否被選中,使用索引
from tkinter import * root = Tk() lb = Listbox(root) for i in range(10): lb.insert(END,str(i*100)) lb.selection_set(3,8) print (lb.selection_includes(8)) #第9個item是否被選中 print (lb.selection_includes(0)) #第一個item是否被選中 lb.pack() root.mainloop()
11 Listbox與變數綁定
from tkinter import * root = Tk() v = StringVar() lb = Listbox(root,listvariable = v) for i in range(10): lb.insert(END,str(i*100)) print (v.get()) #輸出了若干值 v.set(('1000','200')) #Listbox只列出倆值 lb.pack() root.mainloop()
12 Listbox與事件綁定
from tkinter import * root = Tk() def printList(event): print ("hi") lb = Listbox(root) lb.bind('<Double-Button-1>',printList) #綁定雙擊事件 for i in range(10): lb.insert(END,str(i*100)) lb.pack() root.mainloop()