Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Erzeugung eines Fensters

Programme zur Erzeugung eines Fensters

Das folgende Programm erzeugt bereits ein funktionsfähiges Anwendungsfenster.

# -*- coding: iso-8859-1 -*-
from wx import *
# Erzeugung des Fensters
app = App()
frame = Frame(parent=None)
frame.SetTitle("chuck a luck")
frame.SetSize((358, 180))
frame.SetBackgroundColour("white")
frame.Show()
# Aktivierung des Fensters
app.MainLoop()

Wenn man das Programm ausführt, dann ergibt sich dieses Anwendungsfenster:

Anwendungsfenster

Es macht eigentlich nichts weiter, als sich wie ein Fenster zu verhalten. Man kann es z. B. vergrößern oder auch schließen.

GUI-Objekte zur Erzeugung eines Fensters

Mit der Anweisung from wx import * werden alle Namen des Moduls wx importiert. Da dies sehr viele Namen sind, nutzt man oft die Anweisung import wx.

Die Anweisung app = App() erzeugt ein Objekt der Klasse App und bindet es an den Namen app. Dieses Objekt verwaltet Daten, die zur Durchführung der Anwendung benötigt werden.

Die Anweisung frame = Frame(...) erzeugt ein Objekt der Klasse Frame und bindet es an den Namen frame. Dieses Objekt verwaltet Daten zum Fenster wie z. B den Titel und die Größe.

Mit einer Anweisung wie z. B. frame.SetBackgroundColour("white") wird das Objekt frame veranlasst, die Operation SetBackgroundColour(..) mit dem angegebenen Parameterwert auszuführen. Hierdurch wird der entsprechende Attributwert gesetzt.

Mit der Anweisung app.MainLoop() wird schließlich die Ereignisschleife aktiviert.

Aufgabe 1

Teste das oben gezeigte Programm. Verändere das Programm auch in sinnvoller Weise und beobachte die Wirkungen. Ändere z. B. den Fenstertitel oder die Fenstergröße.

Aufgabe 2

Das oben gezeigte Programm lässt sich auch so schreiben:

# -*- coding: iso-8859-1 -*-
from wx import *
# Anwendung
app = App()
# Fenster
frame = Frame(parent=None, title="Testfenster", size=(358, 180))
frame.SetBackgroundColour("white")
frame.Show()
# Ereignisschleife
app.MainLoop()

Was ist hier anders gemacht?

Aufgabe 3

Noch eine Variante:

# -*- coding: iso-8859-1 -*-
import wx
# Anwendung
app = wx.App()
# Fenster
frame = wx.Frame(parent=None, title="chuck a luck", size=(358, 180))
frame.SetBackgroundColour("white")
frame.Show()
# Ereignisschleife
app.MainLoop()

Hier wird das Modul wx anders importiert. Warum könnte das günstiger sein?

X

Fehler melden

X

Suche