py25.png

wxPython

Citát: is the best and most mature cross-platform GUI toolkit, given a number of constraints. The only reason wxPython isn't the standard Python GUI toolkit is that Tkinter was there first. Guido van Rossum

wxPython (http://wxpython.org/) je multiplatformní GUI toolkit založený na C++ frameworku wxWidgets (http://wxwidgets.org), který pro vykreslování využívá obvyklé součásti hostitelského systému.

Dostupný je port mimojiné pro Windows používající Win32API, Unixy používající Gtk+ nebo Motif nebo port pro MacOS používající CarbonAPI.

Důležitým rysem wxPythonu je také jeho licence, která vychází z LGPL a tudíž umožňuje programovat nejen open source aplikace, ale též komerční, closed source. Např. Qt tuto výhodu nemáte (u Qt je možné komerční licenci koupit).

Na Rootu o něm kdysi vycházel seriál http://www.root.cz/serialy/cirkus-s-okny/ ale od té doby se wxPython dost změnil - identifikátory už nemají prefix wx, místo tříd wxSize a wxPoint (teď už jenom Size a Point) je možné používat tuple atd.

Příklad z prvního dílu: http://www.root.cz/data/wxpython/CSO_I_skript_ISO.htm toho seriálu by se dneska dal napsat takhle:

#!/usr/local/bin/env python
# -*- coding: utf-8 -*-
import wx

Title = " Projekt"

class MyFrame(wx.Frame):
   def __init__(self, parent, id, title):
       wx.Frame.__init__(self, parent, id, title, (150, 150), (650, 400))
       self.CenterOnScreen()


class MyApp(wx.App):
   def OnInit(self):
       frame = MyFrame(None, -1, Title)
       frame.Show(True)
       self.SetTopWindow(frame)
       return True

app = MyApp(False) # False => vypisuj chyby při startu aplikace
app.MainLoop()

Další seriál na root.cz "Jak na GUI s wxPythonem":http://www.root.cz/serialy/jak-na-gui-s-wxpythonem/ začal vycházet v červnu 2006.

Kromě celkem hezkého API jsou k dispozici klikací editory jako wxGlade a xrcedit. Snad jediným (zato obrovským) nedostatkem tohoto toolkitu je nepříliš kvalitní dokumentace v češtině.

wxPython in action

je název knihy od spoluautorů wxPythonu Noela Rappina a Robina Dunna. Je velmi podrobná (cca 600 stran) a je napsaná opravdu dobře. Její částečnou nevýhodou je, že je v angličtině. Naštěstí se jedná o dost přijatelnou angličtinu. Nejste-li si jisti, zda byste jí rozuměli, můžete si cvičně přečíst dvě kapitoly, které jsou na stránkách vydavatelství k dispozici ve formátu .pdf. Navíc tu najdete i obsah knihy a všechny zdrojáky, které jsou v knize použity.

Adresa: http://www.manning.com/rappin/

Kniha stojí $50 v tištěné formě, nebo $25 v .pdf. Variantu objednání .pdf jsem vyzkoušel a funguje dobře - po zaplacení přijde e-mail s adresou z níž si můžete knihu v následujících 24 hodinách stáhnout. Když to nestihnete, nebojte, mailem do vydavatelství se to (prý) dá vyřešit. Amazon.com nabízí knihu za $32 a taky tam za stejnou cenu nabízejí i knihu o wxWidgets.

Kniha není jen o wxPythonu samotném. Vychází z programátorských zkušeností, takže tu najdete i kapitoly o tom, jak správně strukturovat zdrojový kód, aby vaše aplikace byly v pohodě rozšiřovatelné a upravovatelné. Také se tu píše o prostředí PyCrust? a jeho možnostech při ladění. Znalost Pythonu se předpokládá, takže nějaké vysvětlování, co to je __init__ v definici třídy neočekávejte. Na druhou stranu, nemusíte být nějací machři, abyste tuto knihu mohli číst. Ostatně, stáhněte si druhou kapitolu a uvidíte.