Menu-Hotkeys

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
scrawl
User
Beiträge: 40
Registriert: Mittwoch 20. August 2008, 17:04
Kontaktdaten:

Dienstag 16. September 2008, 14:54

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
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 16. September 2008, 18:54

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
scrawl
User
Beiträge: 40
Registriert: Mittwoch 20. August 2008, 17:04
Kontaktdaten:

Dienstag 16. September 2008, 18:56

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 :?
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Donnerstag 18. September 2008, 16:03

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.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
scrawl
User
Beiträge: 40
Registriert: Mittwoch 20. August 2008, 17:04
Kontaktdaten:

Freitag 19. September 2008, 20:01

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
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Freitag 19. September 2008, 20:14

``gtk.keysyms.Delete``. Und die ``4`` solltest du durch ``gtk.gdk.CONTROL_MASK`` und die ``1`` durch ``gtk.ACCEL_VISIBLE`` ersetzen.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
scrawl
User
Beiträge: 40
Registriert: Mittwoch 20. August 2008, 17:04
Kontaktdaten:

Freitag 19. September 2008, 22:11

Funktioniert :) vielen Dank für die schnelle Hilfe!
Antworten