Menu kontekstowe Python3 Tkinter nie zamyka się automatycznie po kliknięciu w innym miejscu

Używam Pythona 3.3.3 (a teraz jestem na Ubuntu, ale rozwijam się także na Macu i Windowsie, którego jeszcze nie testowałem). Mam obiekt Treeview, który odpowiada na elementy prawym przyciskiem myszy i pokazuje menu kontekstowe w zależności od tego, co klikniesz ... ale zauważyłem, że jeśli klikniesz prawym przyciskiem myszy gdzieś indziej, gdy oryginalne menu jest w górze, po prostu otworzy się kolejne.

W rzeczywistości normalne kliknięcie również ich nie ukrywa. Nawet gdy zamknę okno, menu nadal pozostają pływające. Jedynym sposobem na ich odejście jest kliknięcie jednej z opcji.

Efekt końcowy jest następujący:

Mój kod menu jest następujący:

def rightclick_listitem(self, event):
    rowitem = self.sources.identify('item', event.x, event.y)

    if rowitem == '':
        print('Right clicked an empty space.')
        return
    # user right clicked something.
    self.sources.selection_set(rowitem)
    rcmenu = Menu(self.root, tearoff=0)
    plugin_disabled=self.sources.item(rowitem, 'values')[0] == 'Disabled'
    if plugin_disabled:
        rcmenu.add_command(label='Plugin is disabled...',
                           command=self.plugin_disabled_click)
    rcmenu.add_command(label='Plugin options',state='disabled' if plugin_disabled else 'active')
    rcmenu.add_command(label='Uninstall plugin')
    rcmenu.post(event.x_root, event.y_root)

Kod wywołujący ten kod znajduje się tutaj:

    #RIGHTMOUSE is a variable that changes based on OS due to the way Mac OSX works
    #sources is the treeview object
    self.sources.bind(RIGHTMOUSE, self.rightclick_listitem)

Wyszukałem hasło i tylko niektórzy ludzie zadawali to samo pytanie bez odpowiedzi. Nadal jestem trochę nowy w tkinter i python w ogóle i nic o tym nie widziałem. Łączę inne działania z widokiem drzewa.

Jeśli potrzebujesz więcej kodu źródłowego, mój projekt jest tutaj:https://github.com/Mgamerz/Fresh-Set-of-Images (freshsetofimages.py)

Każda pomoc jest doceniana.

A wtyczki wymagane do tego pojawienia się:https://github.com/Mgamerz/fsoi_plugins

questionAnswers(2)

yourAnswerToTheQuestion