Seite 1 von 1

Menu-Hotkeys

Verfasst: Dienstag 16. September 2008, 14:54
von scrawl
Kann mir mal jemand ein Beispiel geben, wie ich Menu-Hotkeys definiere? Ich wurschtel mich seit Stunden durch die Referenz und kapier gar nix mehr.
Unter QT war das ganz einfach, da hatte jedes MenuItem einfach eine set_accelarator Methode :?

Mfg & Thx

Verfasst: Dienstag 16. September 2008, 18:54
von Leonidas
Versuch mal vor den entsprachenden Buchstaben einen Bodenstrich zu machen,
use_underline :
if True, an underscore in the label text indicates the next character should be underlined and used for the mnemonic accelerator key if it is the first character so marked.

Verfasst: Dienstag 16. September 2008, 18:56
von scrawl
Nein, das meinte ich nicht. Ich meine, das wenn man z.B. Strg+N drückt, der Menu-Eintrag "Neu" aufgerufen wird.
Hab ich mich wohl misverständlich ausgedürckt, sorry :?

Verfasst: Donnerstag 18. September 2008, 16:03
von Trundle
Unter PyGtk hat jedes Widget eine ``add_accelerator``-Methode (und damit auch MenuItems). Damit der Hotkey dann aber auch funktioniert, muss man die AccelGroup, die man dort übergibt, aber auch zum Fenster hinzufügen, in der das Widget (also in dem Fall MenuItem) liegt, was mit ``gtk.Window.add_accel_group`` geht.

Verfasst: Freitag 19. September 2008, 20:01
von scrawl
Ah ja das ist es, danke :D
Ich verstehe nur noch nicht ganz wie die Argumente aussehen müssen bei add_accelerator.
Ich hab jetzt mit ein bischen herumprobieren das hier rausgekriegt, was das MenuItem bei Strg+Q aktiviert:

Code: Alles auswählen

quit_item.add_accelerator("activate", self.accel_group, ord("q"), 4, 1)
Funktioniert auch, aber wie mache ich z.B. die "Entfernen"-Taste als Hotkey? ord("entf") gibt mir nur nen Fehler, dass ein einzelner Char erwartet wird.

MfG

Verfasst: Freitag 19. September 2008, 20:14
von Trundle
``gtk.keysyms.Delete``. Und die ``4`` solltest du durch ``gtk.gdk.CONTROL_MASK`` und die ``1`` durch ``gtk.ACCEL_VISIBLE`` ersetzen.

Verfasst: Freitag 19. September 2008, 22:11
von scrawl
Funktioniert :) vielen Dank für die schnelle Hilfe!