
Ich habe da ein kleines Problem und mir will keine Lösung einfallen, insbesondere weil ich das Problem dahinter nicht verstehe. Es ist wie folgt:
Ich habe ein kleines Tk-Fenster (und ein Fenster der Engine Panda3D, das sollte aber kein Problem darstellen). Dazu habe ich ein Popupmenu, welches bei Rechtsklick im Panda-Fenster (testweise auch mal auf Tastendruck) aufpoppt. Erstmal kein Problem. Doch sobald das Popup ein zweites oder drittes etc Mal aufgerufen wird, flackert es.
Das Popup wird mehrfach in der Sekunde neu aufgebaut, Events wie <Enter> werden auch dementsprechend oft ausgelöst. Es ist egal, ob sich das Popup über dem Panda-Fenster befindet oder nicht. Der Code ist folgendermaßen:
Code: Alles auswählen
self.popupmenu = Menu(tkroot, tearoff=0)
dirtmenu = Menu(self.popupmenu, tearoff=0)
self.popupmenu.add_cascade(label='Dirt', menu=dirtmenu)
for i in range(len(liste)):
b = Menubutton(dirtmenu, text=liste[i])
b.bind('<Enter>', self.testmich)
b.pack()
self.accept('mouse3', self.popup) #Panda3D-spezifisch
def popup(self):
#self.popupmenu.post(640, 400)
try:
self.popupmenu.tk_popup(640, 400, 0)
finally:
self.popupmenu.grab_release()
def testmich(self, *args):
print('ja')
Danke schon mal!
EDIT sagt, dass ich vergessen habe zu erwähnen: das Problem liegt tatsächlich an den (veralteten) Menubutton()s, mit add_command() flackert es nie. Problem wäre daran das Event <Enter> ....