Eine GUI erzeugen: uicontrol
Die Syntax fast aller GUI - Funktionen zum Erzeugen von Objekten (zum Beispiel: figure(), uicontrol(), uimenu()) funktioniert nach dem Schema:
>> neuerHandle = Funktionsname('Propertyart1','Propertywert1', 'Propertyart2',...
Die Rückgabe "neuerHandle" ist immer ein Handle, der dem erzeugten Objekt zugeordnet ist.
'Propertywert2', 'Propertyart3','Propertywert3');
Beispiel: >> figureHandle = figure('name','MeineErsteGui',...
'position',[(1024/2)-125 (768/2)-125 250 250],...
'numbertitle','off','MenuBar','none');
Selbstverständlich können Sie auch die Figure, in der die GUI erzeugt wird vorher in ihren Eigenschaften festlegen. Der Name wird mit der Property 'name' festgelegt. 'Numbertitle' wird als off festgelegt, damit vor dem GUI - Titel nicht Figure1: steht.
Sie sehen sofort, dass die Festlegung der Properties über mehrere Zeilen gehen muss - selbst in diesem einfachen Beispiel. Matlab erkennt ... und liest den Code, als ob die folgende Zeile zur aktuellen Zeile dazugehört.
Uicontrol()
Allgemein versucht man in Grafical User Interfaces den Endnutzer nicht allzu sehr zu verwirren. Deshalb verwendet man in MatLab die gleichen Schalter und Symbole wie in Internet - Anwendungen.
Aussehen und Funktion dieser Steuerelemente werden im Folgenden auch als Styles bezeichnet:
Style | Beschreibung | |
---|---|---|
Check Box | checkbox | Auswählbarer Status einer Option |
Editable Text | edit | Durch den Benutzer editierbarer Text |
Frame | frame | Vereinigt zusammengehörende Elemente in einer Box/Rahmen |
Pop-up Menu | popupmenu | Auswahlmenü mit verschiedenen Optionen |
List Box | listbox | Wie Frame nur mit einer Scrollbar |
Push Button | pushbutton | Klicken ruft ein Event hervor |
Radio Button | radiobutton |
Auswahl ändert den Status einer Option. I.A. sind Radio Buttons gruppiert. |
Toggle Button |
togglebutton | Es existiert nur der Zustand ein und aus |
Slider | slider | Repräsentiert eine größere Anzahl von Optionen |
Static Text | text | Zeigt unveränderbaren Text in einer Box |
Damit sie sich die Elemente besser vorstellen können, werfen Sie einen Blick auf die Abbildung GUI-Elemente. Es ist notwendig, sich die entsprechenden Begriffe im Hinterkopf zu behalten. Bei Bedarf können Sie aber in der MatLab - Hilfe abgerufen werden (doc uicontrol).
In Matlab können Sie diese Elemente mit der Funktion uicontrol() erstellen. Dazu müssen Sie ein neues uicontrol - Objekt erzeugen, und ihm den entsprechenden Style als Property zuweisen.
Wollen Sie z.B. einen Button erzeugen, würde theoretisch folgender Befehl ausreichen:
>> buttonHandle = uicontrol('Style','pushbutton');
Bei der Erzeugung eines uicontrol - Objekts können aber noch mehr Properties, wie zum Beispiel die Position des Elements, festgelegt werden. Betrachten Sie dazu das folgende Beispiel (siehe auch Abbildung Meine erste GUI):
>> editHandle = uicontrol('Style','edit','String',...
'Hallo Welt!','Position',[(250/2)-100 50 100 100],...
'Tag','Edit');
>> buttonHandle = uicontrol('Style','pushbutton','String',...
'Textschalter','Position',[(250/2)-100 150 100 50],...
'Tag','Button');
Die kryptischen Positionsinformationen ergeben sich aus einer Bildschirmauflösung von 1600 mal 1200 Bildpunkten. Ist Ihnen die Auflösung nicht bekannt, kann mit get(0,'ScreenSize') (0 für das root - Objekt) die Bildschirmauflösung bestimmt werden. Der Mittelpunkt des Bildschirms ist logischerweise die Hälfte dieser Werte. Leider kann mit der Einheit pixel nur absolut positioniert werden. Soll relativ positioniert werden, dann muss die Property Units auf normalized umgestellt werden.
Um Ihre GUI übersichtlich zu gestalten, sollten Sie sich zu Anfang im Klaren sein, wie Ihre GUI aussehen soll. Fertigen Sie dazu eine Zeichnung mit den entsprechenden Elementen an. Das könnte so aussehen wie in der Abbildung GUI-Design.
Soll das neue Objekt in ein bestehendes Objekt eingebunden werden, muss der Handle des parent übergeben werden:
>> neuerHandle = Funktionsname(parentHandle,'Propertyart1', 'Propertywert1',...
'Propertyart2','Propertywertt2',..
Sollen z.B. in verschiedenen Figures GUI - Elemente erzeugt werden, so können diese durch die Handles dieser Parent-Figures unterschieden werden. Man schreibt, wie gewohnt den Handle vor die Properties und trennt durch ein Komma:
>> editHandle = uicontrol(figureHandle, ...)