Pythonmania

Script Different!

Suchen in:
Suche:
Startseite | Schockwellenreiter | Impressum
Navigation
Artikel zu Python
Warum Python?
Hallo Welt
Wie alt ist der Kapitän?
Schmetterlingskurve
Apfelmännchen
Dancing Python
User-Agenten
fakeMail()
Template Engine
Python & XML (1)
wxPython (1)
wxPython (2)
wxPython (3)

How To's
ftp mit Python
Filedialog
Piddle und Mac OS X
XML-RPC
Blogger API

Zope und Python
ZWiki und Plone
Navigation und DTML
»Last Update«

Book Reviews
Python und Tkinter
Python Cookbook

Alte Artikel
O'Reilly
MacPython & Tkinter (d)
MacPython & Tkinter (e)
Modul W
Easy Dialogs
File Dialogs

Archiv
Oktober 2009
Juni 2009
Mai 2009
April 2009
März 2009
Februar 2009
Januar 2009
Dezember 2008
November 2008
Oktober 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
März 2008
Februar 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juli 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006
November 2006
Oktober 2006
September 2006
August 2006
Juli 2006
Juni 2006
Mai 2006
April 2006
März 2006
Februar 2006
Januar 2006
Dezember 2005
November 2005
Oktober 2005
September 2005
August 2005
Juli 2005
Juni 2005
Mai 2005
April 2005
März 2005
Februar 2005

RSS Icon
[フレーム]
Anzeigen
[フレーム]

Notebook

wxPython für den Panther

wxPython ist ein GUI-Toolkit. Eigentlich ist es ein Wrapper um die C/C++-Bibliothek wxWidgets (formerly known as wxWindows). Und dadurch, daß eigentlich C-Funktionen aufgerufen werden, ist wxPython auch eine unglaublich schnelle GUI-Bibliothek.

wxPython ist Cross-Platform. Es existieren Versionen für Windows, diverse *Nixe und für Mac OS X. Es gibt eine Jaguar- und eine Panther-Version. Die Installation ist unglaublich einfach, vorausgesetzt, man hat Jack Jansens MacPython-Framework heruntergeladen und installiert (was jeder engagierte Python-Programmierer auf dem Macintosh sowieso sollte). Danach lädt man ein Package hier herunter, das man mit einem einfachen Doppelklick installiert.

Jetzt ist man in der Lage, sein erstes wxPython-Programm zu schreiben. Es könnte z.B. so aussehen:

#!/usr/bin/pythonw
from wxPython.wx import *
class MyApp(wxApp):
 def OnInit(self):
 frame = wxFrame(NULL, -1, "Hello wxPython-World!")
 frame.Show(true)
 self.SetTopWindow(frame)
 return true
 
app = MyApp(0)
app.MainLoop()

Das schreibt man mit dem Editor seiner Wahl. (Bitte nicht mit der MacPython-IDE. Wegen eines subtilen Aqua-Bugs können keine Fenstermanager außer Aqua selber von der MacPython IDE aufgerufen werden. Aus dem gleiche Grund steht auch indem UNIX-Shebang pythonw anstatt python. pythonw ist ein Wrapper um einen Workaround um diesen Aqua-Bug. Er betrifft übrigens nicht nur wxPython, sondern alle GUI-Toolkits, die auf andere Fenstermanager als auf Aqua aufsetzen, also z.B. auch Tkinter.)

Wenn ihr dieses kleine Skript nun z.B. unter dem Namen wxStart.pyw abspeichert (um die Uebersicht nicht zu verlieren, verpasse ich allen Skripten, die mit pythonw gestartet werden müssen, die Endung pyw), könnt ihr es z.B. folgendermaßen starten:

(1) Im Terminal pythonw /your/path/to/the/file/wxStart.pyw eintippen. Diese Form des Starts ist besonders während der Entwicklung nützlich, da man dann auch eventuelle Fehlermeldungen im Terminal angezeigt bekommt.

(2) Die Datei einfach auf den PythonLauncher schieben, der mit der MacPython Distribution mitkommt. Auch hier kann man in den Preferenzes einstellen, daß ein Terminalfenster zum Programstart geöffnet wird. Wenn das Programm dann fertig ist und keine Fehler mehr zu erwarten sind, kann man diese Option ja wieder wegklicken, das Programm läuft dann wie eine Mac-Applikation.

(3) Am schönsten natürlich in BBEdit. Hier kann man einfach den Run-Befehl unter dem #!-Menü nutzen. Eventuelle Fehlermeldungen werden in einem separaten Window angezeigt. Und da BBEdit den Shebang auswertet, wird auch tatsächlich pythonw gestartet.

Egal, welche Form man bevorzugt, wenn alles korrekt eingetippt wurde, sollte folgendes Fensterchen erscheinen:

[画像:Mein erstes wxWindows-Fenster]

Es ist voll funktionsfähig, man kann es vergrößern und verkleinern und wenn man das rote Knöpfchen drückt, beendet sich der Python-Interpreter und damit auch das Programm.

Was ist nun genau passiert?

from wxPython.wx import *

Hier haben wir die wx-Python-Bibliothek komplett importiert.

class MyApp(wxApp):
 def OnInit(self):
 frame = wxFrame(NULL, -1, "Hello wxPython-World!")
 frame.Show(true)
 self.SetTopWindow(frame)
 return true

Jedes wxPython-Script benötigt eine Klasse, die von wxApp abgeleitet wird und eine OnInit-Methode, die überschrieben werden muß. Danach wird ein »elternloser« Frame von der Klasse wxFrame abgeleitet, für den nur ein Titel (»Hello wxPython-World«) definiert wird. Der Rest ist selbsterklärend.

app = MyApp(0)
app.MainLoop()

Die letzten beiden Zeilen sind vermutlich in allen wxPython-Skripten die gleichen. Wie alle Event-gesteuerten Programm benötigen sie eine Mainloop, die die Events empfängt und verarbeitet und das Programm beendet, wenn das letzte Fenster geschlossen wird.






Werbung:

Letzte Änderung: 16.08.2010; 16:09:30 Uhr | © Copyright: 2000 - 2010 by Kantel-Chaos-Team | Kontakt: der@schockwellenreiter.de

frontierLogo picture Made with a Mac Weblog Commenting and Trackback by HaloScan.com CC-Logo Site Meter

AltStyle によって変換されたページ (->オリジナル) /