2016-03-17 9 views
3

У меня есть привязка события ListboxSelect к моему списку, lb. Я использую select_set для выбора элемента в списке, но функция binded не запускается. Как заставить функцию запускать, когда я выбираю элемент в списке с помощью selection_set, а также когда он нажимается?Tkinter - Функция события запуска при выборе списка

import tkinter as tk 

class SampleApp(tk.Tk): 
    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     self.lb = tk.Listbox(self) 

     for x in range(20): 
      self.lb.insert("end", x) 

     self.lb.bind("<<ListboxSelect>>", self.OnSelect) 

     self.lb.pack(side="top", fill="both", expand=True) 


    def OnSelect(self, event): 
     print(event.widget.get(event.widget.curselection()[0])) 
     self.lb.selection_set(10) 


if __name__ == "__main__": 
    app = SampleApp() 
    app.mainloop() 
+0

Несмотря на то, что это не написано непосредственно на Python, это может быть связано. http://wiki.tcl.tk/13939 – Lafexlos

+0

@ Lafexlos Спасибо за это, заработал, я оставил решение в качестве ответа. – simpleguy

ответ

2

Благодаря Lafexlos указывая мне на этот ресурс: http://wiki.tcl.tk/13939

То, что я понял, что у вас есть, чтобы создать виртуальное событие, которое я тогда обнаружил, может быть сделано в Tkinter с помощью event_generate.

self.lb.event_generate("<<ListboxSelect>>") 

Вышеприведенная строка может использоваться для создания события для списка.

Смежные вопросы