Context Menu schliesst nicht
Verfasst: Montag 25. Dezember 2023, 10:08
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:
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:
ich verstehe das verhalten von context menu 1 nicht, wenn doch beides gleich ist.
(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())
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)