Pythonmania

Script Different!

Suchen in:
Suche:
In Partnerschaft mit Amazon.de
Startseite | Schockwellenreiter | Impressum
Anzeigen


Das Haus vom Nikolaus

Book Cover Nach längerer Pause habe ich mal wieder versucht, mich mit wxPython, dem alternativen GUI-Toolkit für Python (Icon Icon Icon) vertraut zu machen. Dabei gab es erst einmal eine Überraschung: wxPython (Icon Icon Icon) ist beim Tiger mit dabei. Ich habe eine »jungfräuliche« Tiger-Installation (10.4.3) und mein wxPython-Script lief sofort.

(Übrigens gilt das gleiche auch für Tkinter (Icon Icon Icon), dem »anderen« GUI-Toolkit für Python. Auch dies wurde ohne zusätzlichen Installationsaufwand sofort erkannt. Danke, Apple!)

Die Dokumentation zu wxPython ist — im Vergleich zu Tkinter — immer noch mau, doch das wird sich bald ändern: Bei Mannings erscheint im Januar »wxPython in Action« von Noel Rappin and Robin Dunn und wenn das Buch nur halb so gut ist wie das Tkinter-Buch aus dem gleichen Verlag (hier meine Review), dann hat die Suche nach der Dokumentation endgültig ein Ende.

Aber wie gesagt, momentan schlage ich mich mit den Grundlagen herum. Und habe, angesichts der Jahreszeit, erst einmal das Haus vom Nikolaus gezeichnet:


#!/usr/bin/pythonw
import wx

class DrawPanel(wx.Panel):
  def __init__(self, parent):
    wx.Panel.__init__(self, parent, -1)
    wx.EVT_PAINT(self, self.OnPaint)

  def OnPaint(self, event=None):
    dc = wx.PaintDC(self)
    dc.Clear()
    dc.SetPen(wx.Pen("BLACK", 1))
    dc.DrawLine(110, 110, 260, 260)
    dc.DrawLine(260, 110, 260, 260)
    dc.DrawLine(260, 110, 110, 260)
    dc.DrawLine(110, 110, 260, 110)
    dc.DrawLine(110, 110, 110, 260)
    dc.DrawLine(110, 260, 260, 260)
    dc.SetPen(wx.Pen("RED", 2))
    dc.DrawLine(110, 110, 185, 50)
    dc.DrawLine(185, 50, 260, 110)

if __name__ == "__main__":
  app = wx.PySimpleApp(0)
  frame = wx.Frame(None, -1, "Das Haus vom Nikolaus",
     size=(380, 380))
  DrawPanel(frame)
  frame.Show(True)
  app.MainLoop()

Ich glaube, der Code ist selbsterklärend. Die Klasse DrawPanel initialisiert eine von wx.Panel abgeleitete Zeichenfläche und zeichnet dann darauf. Dazu sind Zeichenflächen schließlich da. Und als Ergebnis sehen wir tatsächlich das berühmte Haus.

Screenshot

Man darf nur nicht vergessen, wegen der schon mehrfach beklagten Eigenart von Aqua, pythonw statt python aufzurufen. Und der kostenlose Klon des besten Editors der Welt entwickelt sich mehr und mehr zu meiner bevorzugten »Python-IDE«. Grins

Mir scheint, daß wxPython tatsächlich um einiges logischer und einfacher ist als Tkinter. Daher bin ich sehr gespannt auf das oben erwähnte Buch.

Technorati-Tags:

Posted by Jörg Kantel | Permalink | | | Python






Werbung: