next up previous contents index
Next: Text Widget Up: Widgets Previous: Radiobuttons

Menüs

  Menüs werden in Tk in mehreren Schritten definiert. Zuerst wird ein Frame-Widget erzeugt, das die Menüleiste aufnimmt. In dieser Menüleiste werden durch
menubutton widgetpath -text Name -menu menupath
Menubuttons erzeugt, welche bei Anklicken das durch menupath referenzierte Pull-Down-Menu aufklappen. Das Pull-Down-Menu wird durch
menu widgetpath
erzeugt und mit
widgetpath add Command
können Einträge gemacht werden. Mit Command kann dabei die Art des Eintrages spezifiziert werden. Folgende Arten sind möglich:

Benutzer können auch ohne Hilfe der Maus Menüpunkte öffnen und einen gewünschten Eintrag auswählen. Diese Technik wird in Tk Keyboard-Traversal   genannt. Dazu wird in einem Menüpunkt ein Zeichen mit der Ressource -underline festgelegt. Drückt der Benutzer dieses Zeichen zusammen mit der Alt-Taste, so wird das darunterliegende Untermenü geöffnet bzw. der dazu passende Menüeintrag aktiviert. Mit den Pfeiltasten kann auf einen beliebigen Eintrag verzweigt, und mit der Return-Taste der ausgewählte Eintrag aktiviert werden. Eine andere Möglichkeit bietet die Funktionstaste F10, mit deren Hilfe direkt der am weitesten links stehende Menüeintrag in der Menüleiste aktiviert wird.

Eine weitere Vereinfachung der Arbeit mit Menüs bringen dem Benutzer sogenannte Tastenkürzel  . Das sind spezielle Tastenkombinationen über die direkt ein Menüpunkt aktiviert werden kann, ohne daß das Menü in dem sich der Eintrag befindet geöffnet werden muß. Zu diesem Zweck besitzen Menu-Widgets die Ressource -accelerator, mit der die Tastenkombination, die die entsprechende Aktion auslösen soll, rechts vom Eintrag angezeigt wird (siehe Abbildung Eintrag Kopieren Ctrl-c). Das Setzen der Ressource -accelerator allein reicht nicht aus, um die gewünschte Funktionalität an das Tastenkürzel zu binden. Es muß mit dem bind-Befehl eine entsprechende Verknüpfung zwischen der Tastenkombination und der Funktion erzeugt werden.

Das folgende Beispiel soll diese Regeln verdeutlichen.

 
Figure: Menu-Widget

   #!/usr/bin/wish -f
   #-----------------------------------------------------------------#
   #
   # Programmname : menu.tk
   # TK-Version 4.0 TCL-Version 7.4
   # Erstellungsatum: Sat May 4 14:21:11 GMT 1996
   #
   #-----------------------------------------------------------------#

   frame .menu -relief raised -borderwidth 1
   label .label -text "Menüdemo"

   # Pulldown-Menü 'Datei'
   menubutton .menu.datei -text "Datei" -menu .menu.datei.m -underline 0
   menu .menu.datei.m
   .menu.datei.m add command -label "Öffnen" -underline 0   \
         -command "puts Öffnen" 
   .menu.datei.m add command -label "Speichen" -underline 0 \
         -command "puts Speichern" 
   .menu.datei.m add separator
   .menu.datei.m add command -label "Ende" -command exit -underline 0

   # Pulldown-Menü 'Bearbeiten'
   menubutton .menu.bearbeiten -text "Bearbeiten" -underline 0 \
         -menu .menu.bearbeiten.m 
   menu .menu.bearbeiten.m
   .menu.bearbeiten.m add command -label "Einfügen" -underline 0 \ 
         -command "puts Einfügen" -accelerator Ctrl+v
   .menu.bearbeiten.m add command -label "Kopieren" -underline 0 \ 
         -command "puts Kopieren" -accelerator Ctrl+c
   .menu.bearbeiten.m add separator 
   .menu.bearbeiten.m add cascade -label "Optionen" -underline 0 \
         -menu .menu.bearbeiten.m.opt 
   .menu.bearbeiten.m add cascade -label "Untermenü" -underline 0 \
         -menu .menu.bearbeiten.m.sub 

   # Untermenü mit Optionen
   menu .menu.bearbeiten.m.opt
   .menu.bearbeiten.m.opt add check -label "Kontrollkästchen 1" -underline 0
   .menu.bearbeiten.m.opt add check -label "Kontrollkästchen 2" -underline 1
   .menu.bearbeiten.m.opt add separator
   .menu.bearbeiten.m.opt add radio -label "Option 1" -underline 7
   .menu.bearbeiten.m.opt add radio -label "Option 2" -underline 7

   # normales Untermenü zum Spezial-Menü
   menu .menu.bearbeiten.m.sub
   .menu.bearbeiten.m.sub add command -label "Untermenüeintrag 1" -underline 17
   .menu.bearbeiten.m.sub add command -label "Untermenüeintrag 2" -underline 17
   .menu.bearbeiten.m.sub add command -label "Untermenüeintrag 3" -underline 17

   # Pulldown-Menü 'Hilfe'
   menubutton .menu.hilfe -text "Hilfe" -menu .menu.hilfe.m -underline 0
   menu .menu.hilfe.m
   .menu.hilfe.m add command -label "Über" -underline 0 \
      -command {puts "Testprogramm: Arbeiten mit Menüs unter TK"}

   bind . <Control-Key-c> {
        puts "Kopieren"
   }

   bind . <Control-Key-v> {
        puts "Einfügen"
   }

   # menü anzeigen
   pack .menu -side top -fill x
   pack .label -padx 100 -pady 40
   pack .menu.datei .menu.bearbeiten -side left
   pack .menu.hilfe -side right



next up previous contents index
Next: Text Widget Up: Widgets Previous: Radiobuttons



Sascha Scherer
Fri Dec 6 09:58:01 MET 1996