4
我在這裏遇到的問題是,當我單擊Listbox
中的不同文件名時,Label
將更改值單擊後面的任何一個點擊我當前點擊上。綁定到StringVar的Tkinter標籤在更新時被點擊一次
缺少什麼我在這裏?
import Tkinter as tk
class TkTest:
def __init__(self, master):
self.fraMain = tk.Frame(master)
self.fraMain.pack()
# Set up a list box containing all the paths to choose from
self.lstPaths = tk.Listbox(self.fraMain)
paths = [
'/path/file1',
'/path/file2',
'/path/file3',
]
for path in paths:
self.lstPaths.insert(tk.END, path)
self.lstPaths.bind('<Button-1>', self.update_label)
self.lstPaths.pack()
self.currentpath = tk.StringVar()
self.lblCurrentPath = tk.Label(self.fraMain, textvariable=self.currentpath)
self.lblCurrentPath.pack()
def update_label(self, event):
print self.lstPaths.get(tk.ACTIVE),
print self.lstPaths.curselection()
self.currentpath.set(self.lstPaths.get(tk.ACTIVE))
root = tk.Tk()
app = TkTest(root)
root.mainloop()
這樣做的竅門,謝謝!我還沒有看到任何在我經歷過的教程中的任何地方引用了<< ListboxSelect >>,甚至用Google搜索這個確切的單詞也沒有提供太多的信息。是否有所有虛擬活動的列表?這真的看起來像是一個令人討厭的'陷阱'在Tk ... – Sam 2010-05-28 18:30:31
@Sam:沒有單一的所有事件的列表。 Tk手冊頁列出了該窗口小部件手冊頁上每個窗口小部件的事件。因此,例如,列表框手冊頁上列出了<< ListboxSelect >>:http://tcl.tk/man/tcl8.4/TkCmd/listbox.htm – 2010-05-28 20:50:27