Wie stelle ich in GTK eine Aktion auf einen Menüpunkt ein, der nicht aus dem App-Bereich stammt?Python

Python-Programme
Guest
 Wie stelle ich in GTK eine Aktion auf einen Menüpunkt ein, der nicht aus dem App-Bereich stammt?

Post by Guest »

Ich verwende GTK Blueprints für die Schnittstelle

Code: Select all

menu cover_action {
section {
item {
label: _("Set cover");
action: "card.change_cover";
}

item {
label: _("Remove cover");
action: "card.remove_cover";
}
}
}
Die Aktionen dieser Menüelemente sollten in der SongCard-Klasse definiert werden (die von Gtk.Box geerbt wird)

Code: Select all

class SongCard(Gtk.Box):
def __init__(file):
super().__init__()
self.install_action("card.change_cover", None, self.metadata_change_cover)
self.install_action("card.remove_cover", None, self.metadata_remove_cover)
... some code ....

def metadata_change_cover(self, *_args) -> None:
dialog = Gtk.FileDialog(
default_filter=Gtk.FileFilter(mime_types=["image/png", "image/jpeg"])
)
dialog.open(shared.win, None, self.on_metadata_change_cover)

def metadata_remove_cover(self, *_args) -> None:
self._mde_new_cover_path = None
self._file._cover_updated = True
self.metadata_editor_cover_image.set_from_icon_name("note-placeholder")
Die einzige Möglichkeit, die ich kenne, um eine Menüaktion festzulegen, besteht darin, den Aktionsnamen auf den Aktionsparameter im Blueprint zu setzen. Aber alle diese Aktionen müssen ein Präfix haben, z.B. app oder win.
Wie verwende ich die Instanz der SongCard-Klasse als Bereich, um sie als Präfix für diese Aktionen festzulegen? (self.install_action funktioniert nicht)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post