ich hab mal wieder eine Frage:
Üblicherweise ist es doch bei Programmen normalerweise so, dass ein Popupmenü wieder verschwindet, wenn man irgendwo auf einen anderen Teil des zugehörigen Programms klickt. Bei Tkinter gelingt mir dieses gewünschte Verhalten nicht. Das Popup bleibt so lange sichtbar, bis man einen Eintrag in dem Popupmenü auswählt.
Was aber, wenn man aus Versehen das Menü aktiviert hat! Man sollte diesen Vorgang doch zurücksetzen können.
Hier mal mein Minibeispiel, welches die Situation simuliert:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ttk
tk = ttk.Tkinter
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.title(u"Popupmenütest")
self.lbl = tk.Label(self,
text="""
Mit einem Rechtsklick kann das
Popupmenü gestartet werden!
Wird jedoch kein Eintrag im Popupmenü
angeklickt sondern im Gegenteil
irgendetwas anderes im Fenster, so
verschwindet das Popupmenü nicht!
In bilde mir ein, dass das Popupmenü
üblicherweise verschwindet!
:(
""",
relief=tk.RIDGE)
self.lbl.pack(padx=10, pady=10, ipadx=10, ipady=10)
self.lbl.bind("<3>", self.popup)
def popupaction(self, event):
print "popupaction started"
def popup(self, event):
mnu = tk.Menu(self, tearoff=0)
for i in range(5):
mnu.add_command(
label="Eintrag %s" % (i,),
command=self.popupaction)
mnu.post(event.x_root, event.y_root)
app = App()
app.mainloop()