Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:tkk

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:tkk [2022/03/04 13:20] – [Menu] roehnerde:tkk [2022/08/23 19:03] (aktuell) – [Treeview] roehner
Zeile 1: Zeile 1:
 ===== TKK ===== ===== TKK =====
 +TTK-Widgets sehen eher wie Widgets des Betriebssystems und besser als Tkinter-Widgets. Dafür sind die Tkinter-Widgets leichter konfigurierbar. Die Widgets Combobox, Notebook, Treeview, Progressbar, Separator und Sizegrip gibt es nur als TTK-Widget.
 +
 Ein GUI-Formular wird mit Hilfe von Widgets aufgebaut. Das sind die grafischen Komponenten, die in der Tkinter- bzw. TTK-Symbolleiste zur Verfügung stehen. Nachfolgend wird grundlegendes zur Verwendung von Widgets angegeben, was in vielen Fällen auch ausreicht. Detailliertere Angaben findet man z.B. in der [[https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/index.html| Tkinter Referenz]]. Ein GUI-Formular wird mit Hilfe von Widgets aufgebaut. Das sind die grafischen Komponenten, die in der Tkinter- bzw. TTK-Symbolleiste zur Verfügung stehen. Nachfolgend wird grundlegendes zur Verwendung von Widgets angegeben, was in vielen Fällen auch ausreicht. Detailliertere Angaben findet man z.B. in der [[https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/index.html| Tkinter Referenz]].
  
-Ein GUI-Programm legt man mit dem Symbol {{:tkinter.png}} für neue Tk/TTK-Anwendung auf der Registerkarte Programm an. Widgets können per Drag&Drop oder durch Anklicken eines Widgets und anschließendes Klicken in das GUI-Formular platziert werden. Es wird nur absolutes Layout unterstützt. Das reicht für die meisten Zwecke vollkommen aus. Die Gestaltung einer GUI-Oberfläche mit Layoutmanagern ist deutlich schwieriger. +Ein GUI-Programm legt man mit dem Symbol {{:tkapp.png}} für neue Tk/TTK-Anwendung auf der Registerkarte Programm an. Widgets können per Drag&Drop oder durch Anklicken eines Widgets und anschließendes Klicken in das GUI-Formular platziert werden. Es wird nur absolutes Layout unterstützt. Das reicht für die meisten Zwecke vollkommen aus. Die Gestaltung einer GUI-Oberfläche mit Layoutmanagern ist deutlich schwieriger. 
  
 Attribute und Ereignisse eines Widgets werden im Objektinspektor konfiguriert. Anfangs werden nur die allerwichtigsten Attribute und Ereignisse angezeigt. Diese Filterung vereinfacht die Arbeit mit dem Objektinspektor. Man kann sich in zwei weiteren Stufen mehr beziehungsweise alle Attribute und Methoden anzeigen lassen. Attribute und Ereignisse eines Widgets werden im Objektinspektor konfiguriert. Anfangs werden nur die allerwichtigsten Attribute und Ereignisse angezeigt. Diese Filterung vereinfacht die Arbeit mit dem Objektinspektor. Man kann sich in zwei weiteren Stufen mehr beziehungsweise alle Attribute und Methoden anzeigen lassen.
Zeile 151: Zeile 153:
 ==== Frame==== ==== Frame====
 {{:frame.png}} {{:frame.png}}
-Ein Frame ist ein Container für andere Widgets. Beispielsweise ist die RadiobuttonGroup ein Frame, der Radiobuttons enthält. Mit Frames kann man gut grafische Oberflächen strukturieren. +Ein Frame ist ein Container für andere Widgets. Beispielsweise ist die RadiobuttonGroup ein Frame, der Radiobuttons enthält. Mit Frames kann man gut grafische Oberflächen strukturieren. Zum Platzieren eines Widgets in einem Frame klickt man es in der TTK-Symbolleiste an und klickt dann in das Frame.
  
-Zum Platzieren eines Widgets in einem Frame klickt man es in der TTK-Symbolleiste an und klickt dann in das Frame.+Frames werden beispielsweise beim Notebook-Widget benutzt.
 ---- ----
 ==== LabelFrame ==== ==== LabelFrame ====
Zeile 211: Zeile 213:
         pass         pass
 </code> </code>
 +----
 +==== PopupMenu ====
 +{{:popupmenu.png}}
 +Ein PopupMenu ist ein Kontextmenu, das mit der rechten Maustaste aufgerufen wird. Es wird wie beim Menu-Widget über das Attribut //MenuItems// definiert.
 +
 +Man kann jedem Widget ein PopupMenu zuweisen. Dazu öffnet man im Objektinspektor die Registerkarte //Ereignisse// und wählt Button "Rechts" für das ButtonPress-Ereignis.
 +
 +{{:de:popupmenuexample.png}}
 +
 +In der dabei angelegten Ereignismethode programmiert man das Anzeigen des PopupMenüs an der angeklickten Position.
 +
 +<code python>
 +    def root_ButtonPress(self, event):
 +        self.popupMenu1.post(event.x_root, event.y_root)
 +        pass
 +</code>
 +----
 +==== Menubutton ====
 +{{:menubutton.png}} Ein Menubutton ist ein Button, der beim Anklicken ein PopupMenu anzeigt.
 +Das PopupMenu muss zusätzlich angelegt und dann beim Attribut //Menu// des Menubuttons eingetragen werden.
 +----
 +==== OptionMenu ====
 +{{:optionmenu.png}} Mit einem OptionMenu kann man in der Art eines Menüs aus einer vorgegebenen Stringliste ein Element auswählen. Die Stringliste wird im Attribut //MenuItems// angegeben.
 +
 +Auf die ausgewählte Option greift man über die Kontrollvariable CV zu.
 +
 +<code python>
 +    print(self.optionMenu1CV.get())
 +</code>
 +----
 +==== Notebook====
 +{{:notebook.png}} Ein Notebook-Widget stellt oben Registerkarten bereit, mit denen unten befindliche Frames aufgeschlagen werden können.
 +
 +{{:notebookexample.png}}
 +----
 +==== Treeview====
 +{{:treewidget.png}} Ein Treeview stellt eine hierarchische Struktur baumartig dar.
 +
 +Durch entsprechende Einrückung wird die Struktur über das Attribut //Items// festgelegt. Diese Struktur ist anfangs vorgegeben:
 +
 +<code>
 +First
 +  node A
 +  node B
 +Second
 +  node C
 +    node D
 + </code>
 +----
 +==== Progressbar ====
 +{{:progressbar.png}} Ein Progressbar stellt einen Fortschrittsbalken dar.
 +----
 +==== Separator ====
 +{{:separator.png}} Ein Separator ist eine horizontale oder vertikale Strecke, mit der die GUI-Oberfläche strukturiert werden kann.
 +----
 +==== Sizegrip ====
 +{{:sizegrip.png}} Ein Sizegrip-Widget wird in die rechte untere Ecke platziert um die Größe des gesamten Anwendungsfensters ändern zu können.
 ---- ----
de/tkk.1646396437.txt.gz · Zuletzt geändert: 2022/03/04 13:20 von roehner