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:
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?