Context Menu schliesst nicht

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Ernie1412
User
Beiträge: 161
Registriert: Freitag 10. Januar 2020, 20:38

Sorry ich konnte nicht antworten spamhaus hatte meine IP auf der Blacklist, keine Ahnung warum.
(beim Thema Playwright)
aber hier mein problem (vom Desktop aus, nicht tablet)
ich hab eine context_menu.py wo ich all meine context menus quasi verwalte.
aufruf mit:

Code: Alles auswählen

    def showContextMenu_in_performer_search(self, pos: int) -> None: # tblWdg_performer
        action_header: QAction = self.set_header_on_contextmenu("Tabelle Performer Suche") 
        menu_dict: dict = {
            "Zeile/Namen hinzufügen": ("name_hinzufuegen.png", lambda: PerformerAddDel(self, self.Main) if not self.dialog_shown else None),
            "Zeile/Namen löschen": ("name_loeschen.png", self.delete_performer),
            "Zeile/Namen zusammenfügen/mergen mit ID": ("merge_person.png", lambda: PerformerAddDel(self, "merge", self.Main) if not self.dialog_shown else None) }
        self.show_context_menu(pos, action_header, menu_dict) 
    def show_context_menu(self, pos: int, action_header: QAction, menu_dict: dict) -> None:
        if self.dialog_shown == False:
            self.context_menu = QMenu(self.Main)            
            self.context_menu.addAction(action_header)                          
            for menu, (icon, func) in menu_dict.items():                
                action = QAction(QIcon(f":/labels/_labels/{icon}"), menu, self.Main)            
                action.triggered.connect(func)                
                self.context_menu.addAction(action) 
            self.context_menu.setStyleSheet("QMenu::item:disabled {background: transparent;}")
            self.context_menu.exec(QCursor.pos())
wenn ich auf PerformerAddDel(self, self.Main), ein QDialog, gehe und es schliesse. erscheint immer wieder das context_menu. Ich kriege das auch nur schwer weg. oft irgendwo hinklicken.
in PerformerAddDel() seltze ich self.dialog_shown auf True (self.cmenu=parent self.cmenu.dialog_shown = True)
das verhalten hab ich bei einem anderen context menu nicht nur in "def showContextMenu_in_performer_search" das andere ist genauso aufgebaut.
hier:

Code: Alles auswählen

def showContextMenu_in_performer_links(self, pos: int) -> None: # tblWdg_performer_links
        action_header: QAction = self.set_header_on_contextmenu("Tabelle Performer Links")
        menu_dict: dict = {
            "Zeile hinzufügen": ("zeile_add.png", lambda: PerformerAddDel(self, "add_new_nameslink", self.Main) if not self.dialog_shown else None),
            "Zeile löschen": ("zeile_del.png", self.delete_item),
            "Zeile für eine neuen Performer Datensatz anlegen": ("new_database.png", lambda: PerformerAddDel(self, "add_new_performer", self.Main) if not self.dialog_shown else None), 
            "Refresh Tabelle neu aus Datenbank": ("load_table.png", self.refresh_performer_links_tabelle),
            "Lade Bild von Website": ("load_image.png", self.load_image_from_webside),
            "Tabellenspalten am Text anpassen": ("table_content.png", self.context_resize),
            "Explorer im Namen Ordner öffnen": ("explorer.png", self.open_explorer)     }
        self.show_context_menu(pos, action_header, menu_dict)
ich verstehe das verhalten von context menu 1 nicht, wenn doch beides gleich ist.
Antworten