2017-12-05 7 views
2

Ich habe eine einfache App in python3 und tkinter Modul geschrieben. Ich möchte mein benutzerdefiniertes Widget schreiben und muss mein benutzerdefiniertes Ereignis senden.Wie können Ereignisse in tkinter ausgegeben werden?

Warum funktioniert der folgende Beispielcode nicht?

#!/usr/bin/env python3 

from tkinter import * 

class MyWidget(Listbox): 
    def __init__(self, master, *args, **kwargs): 
     super().__init__(master, *args, **kwargs) 

     # =================== 
     # error: _tkinter.TclError: only one event specification allowed 
     self.bind('<<ListboxSelect>>', lambda e: self.event_generate('MyEvent')) 
     # =================== 


class App(Tk): 
    def __init__(self): 
     super().__init__() 
     w = MyWidget(self) 
     w.bind('MyEvent', lambda e: print('It\'s working')) 
     w.pack() 

     w.insert(END, 'ddddddd') 


if __name__ == '__main__': 
    app = App() 
    app.mainloop() 

Antwort

5

Virtuelle Veranstaltungen müssen von << und >> umgeben sein. Ersetzen Sie einfach 'MyEvent' durch '<<MyEvent>>' und Ihr benutzerdefiniertes Ereignis sollte funktionieren.

Verwandte Themen