python tkinter Listbox用法from tkinter import * root=Tk() v=StringVar() #Listbox與變數繫結' lb1=Listbox(ro
阿新 • • 發佈:2019-01-09
python tkinter元件的Listbox的用法,見下面程式碼的演示:
from tkinter import * root=Tk() v=StringVar() #Listbox與變數繫結' lb1=Listbox(root,listvariable=v) v.set(('10','20','30','40','50')) print(v.get()) lb1.pack() #.建立一個可以多選的Listbox,使用屬性selectmaod' lb2=Listbox(root,selectmode=MULTIPLE) for item in range(10): lb2.insert(END,str(item)) # 有兩個特殊的值ACTIVE和END,ACTIVE是向當前選中的item前插入一個 # (即使用當前選中的索引作為插入位置);END是向 # Listbox的最後一項新增插入一項 lb2.delete(1,3) #刪除全部內容,使用delete指定第一個索引值0和最後一個引數END,即可 lb2.pack() #這個屬性selectmode還可以設定為BROWSE,可以通過滑鼠來移動Listbox中的選中位置 # (不是移動item), #這個屬性也是Listbox在預設設定的值,這個程式與1.程式執行的結果的一樣的 scrollbar=Scrollbar(root) scrollbar.pack(side=RIGHT,fill=Y) lb3=Listbox(root,selectmode=BROWSE,yscrollcommand=scrollbar.set) for item in range(20): lb3.insert(END,str(item)) lb3.pack(side=LEFT,fill=BOTH) scrollbar.config(command=lb3.yview) #將一個垂直方向的Scrollbar和listboxs/canvases/text fields這些控制元件結合起來, # 你只需要按照下面的步驟即可: #1.將這些控制元件的yscrollcommand選項設定為scrollbar的set方法。 #2.將scrollbar的command選項設定為這些控制元件的yview方法。 print(lb3.size()) print(lb3.get(3)) print(lb3.get(3,7)) lb3.selection_set(0,10) lb3.selection_clear(0,3) lb3.pack() def printlist(event): print(lb4.get(lb4.curselection())) #使用selectmode = EXPANDED使用Listbox來支援Shift和Control lb4=Listbox(root,selectmode=EXTENDED) lb4.bind('<Double-Button-1>',printlist) for item in ['python','tkinter','widget']: lb4.insert(END,item) lb4.pack() root.mainloop()
再來一個例項:
在下面這個例子中,點選Listbox的專案,輸出索引號。
from tkinter import * class make_list(Listbox): def __init__(self,master, **kw): frame = Frame(master) frame.pack() self.build_main_window(frame) kw['selectmode'] = SINGLE Listbox.__init__(self, master, kw) master.bind('<Button-1>', self.click_button) master.curIndex = None def click_button(self, event): ##this block works w = event.widget index = int(w.curselection()[0]) value = w.get(index) print(value) ##this doesn't self.curIndex = self.nearest(event.y) print(self.curIndex) self.curIndex = event.widget.nearest(event.y) print(self.curIndex) #display the window, calls the listbox def build_main_window(self, frame): self.build_listbox(frame) #listbox def build_listbox(self, frame): listbox = Listbox(frame) for item in ["one", "two", "three", "four"]: listbox.insert(END, item) listbox.insert(END, "a list entry") listbox.pack() return if __name__ == '__main__': tk = Tk() make_list(tk) tk.mainloop()