python tkinter Listbox用法


python tkinter組件的Listbox的用法,見下面代碼的演示:

 

 1 from tkinter import *
 2 
 3 root=Tk()
 4 v=StringVar()
 5 #Listbox與變量綁定'
 6 lb1=Listbox(root,listvariable=v)
 7 v.set(('10','20','30','40','50'))
 8 print(v.get())
 9 lb1.pack()
10 
11 #.創建一個可以多選的Listbox,使用屬性selectmaod'
12 lb2=Listbox(root,selectmode=MULTIPLE)
13 for item in range(10):
14     lb2.insert(END,str(item))
15 #  有兩個特殊的值ACTIVE和END,ACTIVE是向當前選中的item前插入一個
16 # (即使用當前選中的索引作為插入位置);END是向
17 #  Listbox的最后一項添加插入一項
18 
19 lb2.delete(1,3)
20 #刪除全部內容,使用delete指定第一個索引值0和最后一個參數END,即可
21 lb2.pack()
22 
23 #這個屬性selectmode還可以設置為BROWSE,可以通過鼠標來移動Listbox中的選中位置
24 # (不是移動item),
25 #這個屬性也是Listbox在默認設置的值,這個程序與1.程序運行的結果的一樣的
26 scrollbar=Scrollbar(root)
27 scrollbar.pack(side=RIGHT,fill=Y)
28 lb3=Listbox(root,selectmode=BROWSE,yscrollcommand=scrollbar.set)
29 for item in range(20):
30     lb3.insert(END,str(item))
31     lb3.pack(side=LEFT,fill=BOTH)
32 scrollbar.config(command=lb3.yview)
33 
34 #將一個垂直方向的Scrollbar和listboxs/canvases/text fields這些控件結合起來,
35 # 你只需要按照下面的步驟即可:
36 #1.將這些控件的yscrollcommand選項設置為scrollbar的set方法。
37 #2.將scrollbar的command選項設置為這些控件的yview方法。
38 
39 print(lb3.size())
40 print(lb3.get(3))
41 print(lb3.get(3,7))
42 lb3.selection_set(0,10)
43 lb3.selection_clear(0,3)
44 lb3.pack()
45 
46 
47 def printlist(event):
48     print(lb4.get(lb4.curselection()))
49 
50 
51 #使用selectmode  = EXPANDED使用Listbox來支持Shift和Control
52 lb4=Listbox(root,selectmode=EXTENDED)
53 lb4.bind('<Double-Button-1>',printlist)
54 for item in ['python','tkinter','widget']:
55     lb4.insert(END,item)
56 lb4.pack()
57 
58 
59 root.mainloop()

 再來一個實例:

在下面這個例子中,點擊Listbox的項目,輸出索引號。

 

 1 from tkinter import *
 2 
 3 class make_list(Listbox):
 4     def __init__(self,master, **kw):
 5         frame = Frame(master)
 6         frame.pack()
 7         self.build_main_window(frame)
 8 
 9         kw['selectmode'] = SINGLE
10         Listbox.__init__(self, master, kw)
11         master.bind('<Button-1>', self.click_button)
12         master.curIndex = None
13 
14     def click_button(self, event):
15         ##this block works
16         w = event.widget
17         index = int(w.curselection()[0])
18         value = w.get(index)
19         print(value)
20         ##this doesn't
21         self.curIndex = self.nearest(event.y)
22         print(self.curIndex)
23         self.curIndex = event.widget.nearest(event.y)
24         print(self.curIndex)
25 
26     #display the window, calls the listbox
27     def build_main_window(self, frame):
28         self.build_listbox(frame)
29 
30     #listbox
31     def build_listbox(self, frame):
32         listbox = Listbox(frame)
33         for item in ["one", "two", "three", "four"]:
34             listbox.insert(END, item)
35         listbox.insert(END, "a list entry")
36         listbox.pack()
37         return
38 
39 if __name__ == '__main__':
40     tk = Tk()
41     make_list(tk)
42     tk.mainloop()

 

如果對於Tkinter的事件綁定不太熟悉,可以參見下面這篇教程:

python tkinter教程-事件綁定

 


免責聲明!

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



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