Open Source im professionellen Einsatz
Linux-Magazin 03/2001
419

GUI-Programmierung mit MrEd von DrScheme

Die Elemente zur Erstellung grafischer Benutzeroberflächen basieren auf dem Objektsystem von DrScheme und dem C++-Toolkit wxWindows (http://wxwindows.org). Elemente der Oberfläche wie Knöpfe, Dialoge und Rahmen sind in ein objektorientiertes System eingebettet. Auch deshalb haben wir das Objektsystem zuerst vorgestellt. Wie bei nahezu allen Elementen von DrScheme, ist die Dokumentation geeignet, sich mit der Funktionalität von MrEd vertraut zu machen (siehe [2]). Ein erstes GUI-Beispiel ist schnell realisiert:

(define (hello-scheme-gui-world) 
  (message-box "Hello World" 
       (format "Hallo schöne ~nScheme-Gui~n Welt~n")
       #f
       `(ok)))

Was wären wir schon ohne das famose "Hello World"? ;-)

Hello World mit GUI.

Die Message-Box hat keine besondere Funktionalität und liefert Symbole zurück, die für den gewählten Button stehen. Es handelt sich um einen modalen Dialog, den Sie schließen müssen, bevor Sie irgendetwas anderes machen können. Der erste Parameter der Funktion ist der Name für den Dialog. Beim zweiten handelt es sich um eine Zeichenkette, die Sie beliebig formatieren können. Für die Formatierung wurde hier DrSchemes format-Funktion benutzt.

Der nächste Parameter gibt an, zu wem das Meldungsfenster gehört; #f bedeutet, dass es sich hier um das Element handelt, von dem aus der Dialog aufgerufen wurde. Der letzte Parameter ist eine Liste der gewünschten Knöpfe. Diese Liste darf nur ein Element enthalten!

Interaktion mit dem System

Grafische Benutzeroberflächen sind eigentlich nur für interaktive Eingaben interessant. Die GUIs basieren auf folgendem Schema:

Es gibt eine Ereignisschleife, in der auf Reaktionen von Benutzern gewartet und den Eingaben entsprechend reagiert wird. Ereignisse werden üblicherweise in eine Queue gepackt und sequentiell abgearbeitet. Die Anbindung von Ereignissen auf Benutzereingaben erfolgt oft durch Callback-Funktionen.

Listing 6: Beispiel für die Interaktion mit dem GUI

(define (frame-example)
  (let* ((frame (make-object frame% "Beispiel"))
         (msg (make-object message% "Bislang nichts los hier" frame)))
         (send (make-object button% "Drück mich ;-)" frame
                 (lambda (button event) 
                   (send msg set-label "Maus-klick")
                   (send button set-label "Bin gedrückt worden")))
               min-width 200)
    (send frame show #t)))

Das GUI-Modell MrEds bildet keine Ausnahme. Betrachten wir daher in Listing 6 zunächst einmal die Interaktion mit der grafischen Benutzeroberfläche.

Fenster vor dem Drücken des Knopfs

Fenster nach dem Drücken des Knopfs

Die Callback-Funktion eines Knopfes ist eine Funktion mit zwei Parametern: einem Knopf und einem Ereignis. Hier wurden die Parameter einfach ignoriert und nur der Meldungstext auf Maus-klick geändert.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Standards? Standards!

    Der Scheme-Standard hat einen recht kleinen Umfang, also greifen Programmierer für größere Projekte zwangsläufig auf Erweiterungen zurück. Im Zentrum dieses Artikels stehen daher Standard-Scheme und seine Erweiterungen.

  • Funktioneller gehts nicht

    Nachdem im vorherigen Teil die Basiselemente der Scheme-Programmierung vorgestellt wurden, soll in diesem Artikel ein essentieller Vorteil von Scheme die Hauptrolle spielen, nämlich die funktionale Programmierung.

  • Wechsel auf der Brücke

    Scripting funktioniert nicht nur bei den üblichen Verdächtigen wie Bash, Korn-Shell und Python, sondern auch mit Scheme. Im Zentrum des Artikels stehen darum die Shell-Programmierung mit Scheme sowie die Programmierung fürs Internet.

  • PLT-Scheme 4.0 mit vielen Neuerungen

    PLT-Scheme, ein Softwarepaket bestehend aus Scheme-Implementierung und Entwicklungsumgebung, ist in Version 4.0 erschienen. Die Entwickler haben rund ein Jahr in die neue Release investiert.

  • Web-Wunder

    Mit Scheme setzt das freie Web-Framework Hop eine ziemlich esoterische Programmiersprache ein. Seine Architektur und Flexibilität machen es jedoch zu einer spannenden Alternative zu Django & Co.

comments powered by Disqus

Ausgabe 11/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.