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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie stelle ich in GTK eine Aktion auf einen Menüpunkt ein, der nicht aus dem App-Bereich stammt?

by Guest » 04 Jan 2025, 06:49

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)

Top