From Lucas.Bruand@ecl2002.ec-lyon.fr Wed Mar 28 19:45:36 2001 Received: (qmail 123 invoked by alias); Thu, 29 Mar 2001 03:45:35 -0000 Received: from [156.18.22.3] (helo=cc03.cc.ec-lyon.fr) by first.cirl.uoregon.edu with smtp (Exim 3.22 #1 (Debian)) id 14iTNP-0004AJ-00 for ; Wed, 28 Mar 2001 19:45:35 -0800 Received: from b007b (b007b.eclair.ec-lyon.fr [156.18.26.20]) by cc03.cc.ec-lyon.fr with SMTP (8.9.3/LM.2.0) id FAA17905 for ; Thu, 29 Mar 2001 05:44:04 +0200 (METDST) From: "Lucas Bruand" To: Date: Thu, 29 Mar 2001 05:46:11 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0000_01C0B813.8F4C3700" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200 Subject: [wxPython-doc] wxPython-howto Release 0.02 Sender: wxpython-docs-admin@lists.wxwindows.org Errors-To: wxpython-docs-admin@lists.wxwindows.org X-BeenThere: wxpython-docs@lists.wxwindows.org X-Mailman-Version: 2.0.3 Precedence: bulk Reply-To: wxpython-docs@lists.wxwindows.org X-Reply-To: List-Help: List-Post: List-Subscribe: , List-Id: documenting wxPython List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C0B813.8F4C3700 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by cc03.cc.ec-lyon.fr id FAA17905 Welcome everyone to the wxpython-docs mailing list! At the moment, this list will be used to discuss the development of the wxPython-howto. I'll talk about the original purpose of this howto here: First of all, wxPython-howto is a Python howto (http://py-howto.sourceforge.net/) so we are normally speaking to people = who already know Python and who might know of Tkinter or PyGTK ( It was my ca= se in the first place because I discovered wxPython after Tkinter... That's = why I think an HOWTO would be a good thing for the community: Provide some advertising) The idea is to present Python in its strengths. We shall not try to be exhaustive, and I think we should keep the HOWTO reasonably small. Althrough, I don't now exactly what small is : Compared with the others wxPython-howto is already a big one.) WxPython-howto is being written in Latex using the standard python documentation templates (http://www.python.org/ftp/python/doc/2.1b2/). I = am already tweaking these templates to be able to have pictures in the howto. although the result is not great for the moment.) Please find attached release 0.02. I've sent it here to keep the archive complete. Regards, Everyone. PS.: The files attached are quite big. Until I find a better way of shari= ng development of the wxPython-howto, I'll send the HTML and PDF version as well as the original LATEX sourcefile ( .tex) -----Message d'origine----- De : Lucas Bruand [mailto:lucas.bruand@ecl2002.ec-lyon.fr] Envoy=E9 : mardi 27 mars 2001 20:39 Objet : Python HOWTO Hi everybody! Thanks for your help and support. As I have had a lot of requests for the HOWTO, I'll send to everyone thi= s email, with the latest version of the HOWTO in various formats attached until we find a better way to collaborate. Thanks a lot to everybody for your help. Some random remarks: * First of all, it's still a draft, and it's more of a proposition that = a final result. The more remarks I get the happier I am. * English is not my mother tongue. So there must be pretty much a lot of mistakes around. Feel free to send me remarks about this. But I think we should focus first on ideas. I have deliberately skipped the installation part because I think, teaching how to code is a lot harder and more interesting... Thru I'm going to finish it sometime. * Keep in mind that we are talking here about a Python HOWTO, so we are normally speaking to people who already know Python and who might know of Tkinter or PyGTK ( It was my case in the first place because I discovered wxPython after Tkinter... That's why I think an HOWTO would be a good thi= ng for the community: Provide some advertising) * I hope I'll be able to find a CVS server somewhere to commit the Latex file ( I have had a talk with Andrew Kuchling from py-howto.sourceforge.n= et ...) * I have had a few issues with Latex2Html. I hope it's nonetheless readable. ------=_NextPart_000_0000_01C0B813.8F4C3700 Content-Type: application/octet-stream; name="wxpython.tex" Content-Disposition: attachment; filename="wxpython.tex" Content-Transfer-Encoding: quoted-printable % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= %=0A= % HOWTO : wxPython, a cross-platform GUI Library=0A= % $ Id $=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \documentclass{howto}=0A= =0A= =0A= \title{wxPython, a cross-platform GUI Library }=0A= \release{0.02}=0A= \author{Lucas Bruand}=0A= \authoraddress{\email{lucas.bruand@ecl2002.ec-lyon.fr} }=0A= \begin{document}=0A= \maketitle=0A= \ifhtml=0A= \chapter*{Front Matter\label{front}}=0A= \fi=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \begin{abstract}=0A= \noindent=0A= In this document, we present a crossplatform GUI ( Graphical User = Interface) called wxPython. We shall be using wxPython 2.2.5 . We shall = also introduce a few advanced topics that make the strength of wxPython. =0A= =0A= This document is available in several formats, including PostScript,=0A= PDF, HTML and plain ASCII, from the Python HOWTO page at=0A= \url{http://www.Python.org/doc/howto/}.=0A= =0A= \end{abstract}=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \tableofcontents=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{Introduction- Yet an other GUI for Python ? }=0A= Yes, wxPython ranks amongst the toolkits that enable writing = cross-platform GUI-apps like \module{pyQT}, \module{pyGTK}, or = \module{Tkinter}. But under windows, and unlike \module{Tkinter} or = \module{pyGTK}, a \module{wxPython} App has a look and feel very similar = to what you would get with an application using microsoft natice GUI, = MFC \footnote{Microsoft Foundation Classes}. This is because wxPython is = a fine layer over the native GUI classes. Besides this, wxPython is very = simple to learn and takes advantage of the possibilities Python is = offering. By instance, events handling is particularly nice under = wxPython.=0A= In fact, wxPython is simply (?) Python Bindings to a C++ Library called = wxWindows; dating back from 1992 \footnote{It's almost as old as Tkinter = - which dates back from 1990}, wxWindows is now a very stable, = efficient, object-oriented library running (smoothly) on Windows, Unix ( = GTK/Motif/Lesstif) and soon Macintosh.=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D =0A= \section{Prerequisites}=0A= We consider the reader has sufficient knowledge of Python and is = familiar with classes and objects in Python\footnote{ If you are not = already a Pythonista,you might want to have a look at = \url{http://www.crosswinds.net/~agauld } }. No other knowledge is = required.=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{Installation}=0A= =0A= \subsection{Windows}=0A= Installation under windows is specialy simple: Run the installer you can = get from \url{http://www.wxpython.org/download.php} and follow the = instructions.=0A= =0A= \subsection{Linux - Redhat}=0A= You can find RPMs for Redhat (they are working just fine with Mandrake = thru), at the address \url{http://www.wxpython.org/download.php}. =0A= =0A= \subsection{Linux - Building from sources}=0A= TO DO=0A= % TO BE CONTINUED.=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{A first application - Hello world}=0A= As it is traditional, we are first going to write a Small "Hello world" = app.=0A= Here is the code:=0A= \begin{verbatim}=0A= import wxPython.wx=0A= from wxPython.wx import NULL,true,false=0A= class HelloApp(wxPython.wx.wxApp):=0A= def OnInit(self):=0A= frame =3D wxPython.wx.wxFrame(NULL,-1,"Hello world")=0A= frame.Show(true)=0A= self.SetTopWindow(frame)=0A= return true=0A= app =3D HelloApp()=0A= app.MainLoop()=0A= \end{verbatim}=0A= After importing \module{wxPython} GUI, we derive our new application = from wxPython's original application abstract class. This lets use = rewrite the \method{OnInit} method.=0A= This is where the real work is:=0A= We instantiate a new \keyword{Frame}\footnote{A frame in wxPython is a = window with its titlebar, reduction and close buttons, etc... it can be = a normal application window, a MDI parent frame, etc...} with the = constructor \class{wxFrame}. We make this \keyword{Frame} appear by = "showing" it. Eventually, we tell the application that this frame is = going to be its Topwindow ( so that the application terminates when you = close the frame). =0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \section{Pushing it a bit further - Marvels of wxPython}=0A= In this section, we will build a little editor. This is mostly to = convince you of the inner capabilities and of the simplicity of use of = wxPython. If you are already convinced you might as well want to read = \emph{Advanced Topics}, first.=0A= \subsection{Adding the edit component}=0A= The first step is to add a new edit component. The code herein appears, = by courtesy of Mr Michael Roberts\footnote{ See Also his excellent = article in Useful resources }.=0A= \begin{verbatim}=0A= import wxPython.wx=0A= from wxPython.wx import NULL,true,false=0A= class main_window(wxPython.wx.wxFrame):=0A= """ We simply derive a new class of Frame. """=0A= def __init__(self,parent,id,title):=0A= wxPython.wx.wxFrame.__init__(self,parent,-4, title, size =3D ( = 200,100),=0A= = style=3DwxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE)=0A= self.control =3D wxPython.wx.wxTextCtrl(self, 1, = style=3DwxTE_MULTILINE)=0A= self.Show(true)=0A= class EditApp(wxPython.wx.wxApp):=0A= def OnInit(self):=0A= frame =3D main_window(NULL,-1,"A sample edit ctrl")=0A= frame.Show(true)=0A= self.SetTopWindow(frame)=0A= return true=0A= app =3D EditApp()=0A= app.MainLoop()=0A= \end{verbatim}=0A= As you can see, it is not very difficult: All we have to do is to derive = \class{wxFrame} and then overload its \method{__init__} method. In this = method, we declare a new \class{wxTextCtrl}, which is a simple text edit = control. Here, a good thing to do, would be to have a look at the demoes = that are bundled with the install package. They deal with all sort of = subjects and show very well how easy and rich wxPython is.=0A= =0A= \subsection{ Adding a menu}=0A= Every application should have a menu bar and a status bar. Let's add = that to ours:=0A= \begin{verbatim}=0A= import wxPython.wx=0A= from wxPython.wx import NULL,true,false=0A= ID_ABOUT=3D101=0A= ID_EXIT=3D110=0A= class main_window(wxPython.wx.wxFrame):=0A= def __init__(self,parent,id,title):=0A= wxPython.wx.wxFrame.__init__(self,parent,-4, title, size =3D ( = 200,100),=0A= = style=3DwxPython.wx.wxDEFAULT_FRAME_STYLE|wxPython.wx.wxNO_FULL_REPAINT_O= N_RESIZE)=0A= self.control =3D wxPython.wx.wxTextCtrl(self, 1, = style=3DwxPython.wx.wxTE_MULTILINE)=0A= self.CreateStatusBar() # A Statusbar in the bottom of the window=0A= # Setting up the menu.=0A= filemenu=3D wxPython.wx.wxMenu()=0A= filemenu.Append(ID_ABOUT, "&About"," Information about this = program")=0A= filemenu.AppendSeparator()=0A= filemenu.Append(ID_EXIT,"E&xit"," Terminate the program")=0A= # Creating the menubar.=0A= menuBar =3D wxPython.wx.wxMenuBar()=0A= menuBar.Append(filemenu,"&File") # Adding the "filemenu" to the = MenuBar=0A= self.SetMenuBar(menuBar) # Adding the MenuBar to the Frame = content.=0A= =0A= self.Show(true)=0A= class EditApp(wxPython.wx.wxApp):=0A= def OnInit(self):=0A= frame =3D main_window(NULL,-1,"A sample editor")=0A= frame.Show(true)=0A= self.SetTopWindow(frame)=0A= return true=0A= app =3D EditApp()=0A= app.MainLoop()=0A= \end{verbatim}=0A= The only little problem is that our application does little more that = showing our new menu: As it is, our menu is a deadborn deprived of any = reaction. Rather sad...Let's implement reactions into our program:=0A= =0A= \subsection{ Practical event handling}=0A= Reacting to events in wxPython is called \keyword{event handling}. = Flexible eventhandling is one of the biggest strengths of wxPython. We = are going to present practical basic event handling and we'll discuss = later in \emph{advanced topics}, the why and how.=0A= An event is a small message sent by wxPython to your application to = signify that "something" has happened (the mouse has been moved, a key = has been pressed, the user has popped up the menu, everything you might = possibly think of...).=0A= Most often, in wxPython, all you have to do, is to "connect" an event = with a particular method.=0A= This is done by calling the pseudo methods \method{EVT_*}. By instance:=0A= \begin{verbatim}=0A= EVT_MENU(self, ID_ABOUT, self.OnAbout )=0A= \end{verbatim}=0A= In other words, from now on, any menu selection event with ID, ID_ABOUT = that is sent to window \code{self}, will be passed to the method = \method{self.OnAbout}.=0A= The latter method has the general declaration:=0A= \begin{verbatim}=0A= def OnAbout(self, event):=0A= ...=0A= \end{verbatim}=0A= where event is an instance of a subclass of wxEvent.=0A= Let's now have a look at what it is like in our application:=0A= =0A= \begin{verbatim}=0A= import wxPython.wx=0A= from wxPython.wx import NULL,true,false=0A= ID_ABOUT=3D101=0A= ID_EXIT=3D110=0A= class main_window(wxPython.wx.wxFrame):=0A= def __init__(self,parent,id,title):=0A= wxPython.wx.wxFrame.__init__(self,parent,-4, title, size =3D ( = 200,100), = style=3DwxPython.wx.wxDEFAULT_FRAME_STYLE|=0A= wxPython.wx.wxNO_FULL_REPAINT_ON_RESIZE)=0A= self.control =3D wxPython.wx.wxTextCtrl(self, 1, = style=3DwxPython.wx.wxTE_MULTILINE)=0A= self.CreateStatusBar() # A Statusbar in the bottom of the window=0A= # Setting up the menu.=0A= filemenu=3D wxPython.wx.wxMenu()=0A= filemenu.Append(ID_ABOUT, "&About"," Information about this = program")=0A= filemenu.AppendSeparator()=0A= filemenu.Append(ID_EXIT,"E&xit"," Terminate the program")=0A= # Creating the menubar.=0A= menuBar =3D wxPython.wx.wxMenuBar()=0A= menuBar.Append(filemenu,"&File") # Adding the "filemenu" to the = MenuBar=0A= self.SetMenuBar(menuBar) # Adding the MenuBar to the Frame = content.=0A= wxPython.wx.EVT_MENU(self, ID_ABOUT, self.OnAbout) # attach the = menu-event ID_ABOUT to the =0A= # method self.OnAbout=0A= wxPython.wx.EVT_MENU(self, ID_EXIT, self.OnExit) # attach the = menu-event ID_EXIT to the=0A= # method self.OnExit=0A= self.Show(true)=0A= def OnAbout(self,e):=0A= d=3D wxPython.wx.wxMessageDialog( self, " A sample editor \n"=0A= " in wxPython","About Sample Editor", = wxPython.wx.wxOK) =0A= # Create a message dialog box=0A= d.ShowModal() # Shows it=0A= d.Destroy() # finally destroy it when finished.=0A= def OnExit(self,e):=0A= self.Close(true) # Close the frame.=0A= class EditApp(wxPython.wx.wxApp):=0A= def OnInit(self):=0A= frame =3D main_window(NULL,-1,"A sample edit ctrl")=0A= frame.Show(true)=0A= self.SetTopWindow(frame)=0A= return true=0A= app =3D EditApp()=0A= app.MainLoop()=0A= \end{verbatim}=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \subsection{More magic}=0A= Hum, this application looks now really (?) good. But what if I want to = save my datas ? That's where Common dialogs come in. Those dialogs are = those offered by the underlying platform so that your application will = exactly look like a native application. =0A= We shall first have to code a few methods to our \class{main_window} to = save and load:=0A= \begin{verbatim}=0A= def OnSave(self,e):=0A= f=3Dopen(self.dirname+'\\'+self.filename,"w")=0A= f.write(self.control.GetValue())=0A= f.close()=0A= def OnOpen(self,e):=0A= dlg =3D wxPython.wx.wxFileDialog(self, "Choose a file", = self.dirname, "", "*.*", wxPython.wx.wxOPEN)=0A= if dlg.ShowModal() =3D=3D wxPython.wx.wxID_OK:=0A= self.filename=3Ddlg.GetFilename()=0A= self.dirname=3Ddlg.GetDirectory()=0A= f=3Dopen(self.dirname+'\\'+self.filename,'r')=0A= self.control.SetValue(f.read())=0A= f.close()=0A= dlg.Destroy()=0A= def OnSaveAs(self,e):=0A= dlg =3D wxPython.wx.wxFileDialog(self, "Choose a file", = self.dirname, self.filename, "*.*", wxPython.wx.wxSAVE)=0A= if dlg.ShowModal() =3D=3D wxPython.wx.wxID_OK:=0A= self.filename=3Ddlg.GetFilename()=0A= self.dirname=3Ddlg.GetDirectory()=0A= self.OnSave(e)=0A= dlg.Destroy()=0A= \end{verbatim}=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \section{Advanced topics}=0A= \subsection{Events}=0A= Events are really one of the \emph{key feature} of wxPython. =0A= % TO BE CONTINUED=0A= \subsection{Scintilla}=0A= =0A= % TO BE CONTINUED=0A= \subsection{Boa-constructor}=0A= Boa-constructor is a RAD IDE for wxPython. =0A= % TO BE CONTINUED=0A= \subsection{multithreading}=0A= Unfortunately, threading is somewhat of an issue in wxPython, at the = moment. This is because wxWindows does not support multithreading=0A= % Why in what way ?=0A= % TO BE CONTINUED=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \section{Useful resources}=0A= =0A= \begin{definitions}=0A= =0A= \term{\url{http://wxPython.org/} }=0A= To start with, a very obvious website but you can also have a look in = the demo shipped in with the wxPython package. It's full of very useful = examples approaching nearly all the subjects you can think of.=0A= =0A= \term{\url{http://wx.windows.org/} }=0A= You can also try to find directly information on the wxWindows website - = Although wxPython's documentation contains all wxWindows', so it's a bit = useless to go there, if you have had a look at wxPython's in the first = place. =0A= \term{\url{http://lists.wxwindows.org/mailman/listinfo/wxpython-users} }=0A= The wxPython mailing lists.=0A= =0A= \term{\url{http://boa-constructor.sourceforge.net/} }=0A= Boa-constructor is a RAD GUI building IDE for wxPython.=0A= =0A= \term{\url{http://www-106.ibm.com/developerworks/library/l-wxpy/index.htm= l} }=0A= An excellent article for newbies=0A= =0A= \term{\url{http://www.oreillynet.com/pub/a/Python/excerpts/chpt20/wxpytho= n.html} }=0A= Last but not least: The book "Python Programming on Win32 using = WxPython" of Mark Hammond and Andy Robinson has an entire (excellent) = chapter on wxPython .=0A= =0A= \term{\url{http://www.scintilla.org/} }=0A= Scintilla is a complete editing component for which wxPython offers = bindings (a control named \class{wxStyledTextCtrl2} ). =0A= =0A= \term{\url{http://www.python.org/} }=0A= The reference website relative to the python community.=0A= =0A= \term{\url{http://www.crosswinds.net/~agauld} }=0A= A python tutorial.=0A= \end{definitions}=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{As a conclusion- slithering our way to the future of GUI-apps}=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{Acknowledgements}=0A= I'd like to thank:=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \end{document}=0A= ------=_NextPart_000_0000_01C0B813.8F4C3700 Content-Type: application/x-gzip; name="wxpython.html.tar.gz" Content-Disposition: attachment; filename="wxpython.html.tar.gz" Content-Transfer-Encoding: base64 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 AvTFVSSEAg3D8yCAtiIhGOxBKG3di/4CS4ZhfDCCtrYfvnYwrnYwnrY/jnYYfrYvbikufOIPFF25 KMtF30lL4JN9BuM/96wKx1bHSP/P3OD5r9lsFP/xdB5h/y2O8P8ucv/vP3HPf687578Nfv774X/6 4Kc/9ZeP/nt57z9n/3n5b97dfvR7nz9IPfEbv5OpPjJV337one+xPv8R7c2fq7/+H77xwf959pWn ty/euzr7+F987uCrt663H9Gsbyc3Xyjdf+GBD1wr/fmTTz77hd9875uefurhNzz2ZzOPrq5+8l+u vPDdC1/8/GPX/vu7v3rx1iefXfn2k1e+oLxw6/eRF9/0/d9z5zueKe4//r7H3/HMX99223Q8X36n +q73f/j9P/axl77xyivRIfCRT9D4P83477ns0P0P09H9T6fz+Nh/i69z/b//8CdW3/26Mf2/nxYG 2Q+457+/ct9zO5W/uvXle75VePj3r/9p+ztvvvTUjTd+620Pfeqhe//vnrc895W51b/9qHzLbbff uDH/0o//4O2/9Pps7GPPff2bL//uD71Nvn/9B+5Qv/TZDz3yb/lrb7j+Ryv2b2e+dqF19y9+8xNP lZ//u/0//vqXp267/edfpO95a71A40/88h88+vdy9kvve+DT//UrC80XP/N7X/zHX/vIZ5a/um0k f/KJj/7Hxz/+oR95+ZkfXlr58md/4crWW/71wy+RT77319v/W/ya+Vsv/egnHrv3jdZ3nr+C1Hg1 W3KP9njjX9NlNn3cll/xhI//THpmLu2N/xzeBZPJzUxH8V9P5cnfvrK5XLl+tUSw68nVnaXy2jKJ J1Opa9PLqdRKZYVwK25OSpOKQTVTsRRdo2oqVdpAey+Wwi9GZfiyFEtlhQxZ0yxDl+0a5k2S68wi VCO61WAGubKzRuq6Qa5ytiN3k3xKlIrl10uVItkorpcW4zIza4bSwvJxsry5USltVBbjhwMc7we5 zzpt3ZDNHngu8w/kNJip20aNJdEk3ZNd1mt2E1bHgeyyYlqGUrUHkN1T9SpVMW+TWRTIa7WS7H5b OViML4tVNlnh8J01dzFugZadQoLeRWoNapjMWlRMPTk/P7OQzCAgVdH2icHUxfh25Xq5tL1aKlXi pGGwerctUs00MW95beMeslUqC+U9Tla3SpfhN4zyHB/l/XlQCVV023SheXLAcFa7NUam4DpTDqtU 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 XOEypc7CweMydKjmDHbXvLQAmFDUpGSYPpsY0NMHEDpAqoprSsrLM32O3/4se11OVVdL9TKjDpoU 9kcXaf/smRqQPn7JAfnFPdrfhYBeof31Bu8vnKX2N9/D9UPn/dB5P3TeD533Ixz0o/y7y3fyf//b +X9sXLw/z//lheb/cXH+uP/rv1L+E/GfP68r/2xo6E9i/BE1+nX45pdZgX9L7Ob/BXPkz+95/rA5 /+/anH/CPvuDTcd/Mihhaev5tZ1LYQh1bqFr5zM/QAUr+59nAwjspSdqLiJ0eY8C9DSWMC0jB62I koeFGRgocanBhFihP14+JkqI1eVzjZ+blJdHLSlFHKBVWD4rPTGQhQMHG8SmBFkwO/hAJI6V2xfr EvgVBWTEP/WZFTIq6OC+OsW/SOezsXWwZFaCiLXPGX2/k2DD/69k9LGz/asZfezfJMf8uzP62L/J mPmnM/rYv8mW+UsZfezfJMD8Uxl97N+keP2VjD72b9K6/m0ZfezfJHr9WzL62L9N+voPZfSxf5sf 9i9m9HF8my/2VzL6OL5NF/sXM/o4vk2P/GsZfRzfZj/+1Yw+jm/THv+ZjD6Ob9Md/8mMPo5v0xv/ UkYfx7fZjX89o4/jG1b/Sxl9HN/w8X8+o4/zG07/FzL6ONn/rRl932i+/3Iw+f8F++yHEf7DCP83 GOE/oqQ/yo/yo/wof1z+P0dMtQ8AmAMA ------=_NextPart_000_0000_01C0B813.8F4C3700-- From Lucas.Bruand@ecl2002.ec-lyon.fr Wed Mar 28 19:57:19 2001 Received: (qmail 123 invoked by alias); Thu, 29 Mar 2001 03:57:18 -0000 Received: from [156.18.22.3] (helo=cc03.cc.ec-lyon.fr) by first.cirl.uoregon.edu with smtp (Exim 3.22 #1 (Debian)) id 14iTYk-0004Dp-00 for ; Wed, 28 Mar 2001 19:57:18 -0800 Received: from b007b (b007b.eclair.ec-lyon.fr [156.18.26.20]) by cc03.cc.ec-lyon.fr with SMTP (8.9.3/LM.2.0) id FAA18045 for ; Thu, 29 Mar 2001 05:55:48 +0200 (METDST) From: "Lucas Bruand" To: Date: Thu, 29 Mar 2001 05:57:54 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0015_01C0B815.32A3E640" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200 Subject: [wxPython-doc] wxPython-howto Release 0.03 Sender: wxpython-docs-admin@lists.wxwindows.org Errors-To: wxpython-docs-admin@lists.wxwindows.org X-BeenThere: wxpython-docs@lists.wxwindows.org X-Mailman-Version: 2.0.3 Precedence: bulk Reply-To: wxpython-docs@lists.wxwindows.org X-Reply-To: List-Help: List-Post: List-Subscribe: , List-Id: documenting wxPython List-Unsubscribe: , List-Archive: This is a multi-part message in MIME format. ------=_NextPart_000_0015_01C0B815.32A3E640 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by cc03.cc.ec-lyon.fr id FAA18045 Please find attached release 0.03. I've sent it here to keep the archive complete. Regards, Everyone. PS.: The file attached are quite big. Until I find a better way of sharin= g development of the wxPython-howto, I'll send the original LATEX sourcefil= e .tex) but no PDF or no HTML, sorry the list couldn't cope with that big things. ( 40Ko upper limit) -----Message d'origine----- De : Lucas Bruand [mailto:lucas.bruand@ecl2002.ec-lyon.fr] Envoy=E9 : mercredi 28 mars 2001 06:06 Objet : HOWTO release 0.03 Hi! release 0.03 * Next release might be this weekend ( I hope but nothing is sure). I hop= e by then we'll have a CVS server. * I eventually managed to make "mkhowto" work ( mkhowto is a Python tool = to transform Latex form Howto into all sorts of formats) * I have still a few issues with Latex ( e.g. inserting images or adding bold to a code ) I hope I'll be able to solve them. * I think it would be a good thing if we set a syntax for the code in all the document. ( i.e. ClassNames or Classnames, etc... ) * Thanks to Robin Dunn, we have changed the some parts of the code that h= ave been deprecated. If you think there is a problem, please inform me. You also have to settle s= ome standards for code writing: - Use from wxpython.wx import * or from wxpython import * and hav= e wx. everywhere - * I'll need to concentrate on Advanced topics. Anyone wants to contribute some part ? * Robin proposed also to introduce some other features into the HOWTO: 13. I think it would be very educational to have a sample that shows how = to create a form composed of a few of the simpler controls (wxStaticText, wxTextCtrl, wxComboBox, wxCheckbox, etc.) Many people come to wxPython looking for a tool to make simple forms based applications like this so t= o see it in the HOWTO would be wonderful. Maybe you could do it once with absolute positioning on a wxPanel, then the next section could put it in = a wxNotebook, and then the next section could build the same form (or maybe= an even more complex one) using sizers and put it the next page of the notebook. That way they can see how powerful and easy it is to do layout with sizers, plus they learn about notebooks along the way. 14. I've attached a simple little drawing app that will be part of a new sample in the next release of wxPython. If you want to teach about mouse events, paint events, popup menus, drawing on a window using a wxDC, etc. this would be a good one to do it with. ----> This means there will be some reorganisation in the sections. Bye ! ------=_NextPart_000_0015_01C0B815.32A3E640 Content-Type: application/octet-stream; name="wxpython.tex" Content-Disposition: attachment; filename="wxpython.tex" Content-Transfer-Encoding: quoted-printable % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= %=0A= % HOWTO : wxPython, a cross-platform GUI Library=0A= % $ Id $=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \documentclass{howto}=0A= =0A= =0A= \title{wxPython, a cross-platform GUI Library }=0A= \release{0.03}=0A= \author{The wxPython community}=0A= \authoraddress{\email{lucas.bruand@ecl2002.ec-lyon.fr} }=0A= \begin{document}=0A= \maketitle=0A= \ifhtml=0A= \chapter*{Front Matter\label{front}}=0A= \fi=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \begin{abstract}=0A= \noindent=0A= In this document, we present a cross-platform GUI ( Graphical User = Interface) called wxPython. We shall be using wxPython 2.2.5 . We shall = also introduce a few advanced topics that make the strength of wxPython. =0A= =0A= This document is available in several formats, including PostScript,=0A= PDF, HTML and plain ASCII, from the Python HOWTO page at=0A= \url{http://py-howto.sourceforge.net/}.=0A= =0A= \end{abstract}=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \tableofcontents=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{What is wxPython ? }=0A= WxPython ranks amongst the toolkits that enable writing cross-platform = GUI-applications like \module{pyQT}, \module{pyGTK}, or = \module{Tkinter}. But under windows, and unlike \module{Tkinter} or = \module{pyGTK}, a \module{wxPython} Application has a look and feel very = similar to what you would get with an application using microsoft native = GUI, MFC \footnote{Microsoft Foundation Classes}. This is because = wxPython is a fine layer over the native GUI classes. Besides this, = wxPython is very simple to learn and takes advantage of the = possibilities Python is offering. By instance, events handling is = particularly nice under wxPython.=0A= In fact, wxPython is simply (?) Python Bindings to a C++ Library called = wxWindows; dating back from 1992 \footnote{It's almost as old as Tkinter = - which dates back from 1990}, wxWindows is now a very stable, = efficient, object-oriented library running (smoothly) on Windows, Unix ( = GTK/Motif/Lesstif) and soon Macintosh.=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D =0A= \section{Prerequisites}=0A= We assume the reader has sufficient knowledge of Python and is familiar = with classes and objects in Python\footnote{ If you are not already a = Pythonista,you might want to have a look at = \url{http://www.crosswinds.net/~agauld } }. No other knowledge is = required.=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{Installation}=0A= =0A= \subsection{Windows}=0A= Installation under windows is especially simple: Run the installer you = can get from \url{http://www.wxpython.org/download.php} and follow the = instructions.=0A= =0A= \subsection{Linux - Redhat}=0A= You can find RPMs for Redhat (they are working just fine with Mandrake = though), at the address \url{http://www.wxpython.org/download.php}. =0A= =0A= \subsection{Linux - Building from the source}=0A= TO DO=0A= % TO BE CONTINUED.=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{A first application - Hello, world}=0A= As is traditional, we are first going to write a Small "Hello world" = app.=0A= Here is the code:=0A= % Old code:=0A= % from wxPython.wx import *=0A= % class HelloApp(wxApp):=0A= % def OnInit(self):=0A= % frame =3D wxFrame(None,-1,"Hello, world")=0A= % frame.Show(true)=0A= % self.SetTopWindow(frame)=0A= % return true=0A= % app =3D HelloApp()=0A= % app.MainLoop()=0A= % New code:=0A= \begin{verbatim}=0A= from wxPython.wx import wxPySimpleApp, wxFrame=0A= app =3D wxPySimpleApp()=0A= frame =3D wxFrame(None, -1, "Hello World")=0A= frame.Show(1)=0A= app.MainLoop()=0A= \end{verbatim}=0A= % After importing \module{wxPython} GUI, we derive our new application = from wxPython's original application abstract class. This lets use = rewrite the \method{OnInit} method.=0A= % This is where the real work is:=0A= % We instantiate a new \keyword{Frame}\footnote{A frame in wxPython is a = window with its titlebar, reduction and close buttons, etc... it can be = a normal application window, a MDI parent frame, etc...} with the = constructor \class{wxFrame}. We make this \keyword{Frame} appear by = "showing" it. Eventually, we tell the application that this frame is = going to be its Topwindow ( so that the application terminates when you = close the frame). =0A= % Explaination:=0A= After importing \module{wxPython} GUI, we instantiate a new = \class{wxPySimpleApp} and a new \class{wxFrame}. A frame in wxPython is = a window with its titlebar, reduction and close buttons, etc... = \footnote{it can be a normal application window, a MDI parent frame, = etc...} We make this \keyword{Frame} appear by "showing" it. Eventually, = we start the application's \method{MainLoop} whose role=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{Pushing it a bit further - Marvels of wxPython}=0A= In this section, we shall build a little editor. This is mostly to = convince you of the inner capabilities and of the simplicity of use of = wxPython. If you are already convinced you might as well want to read = first \emph{Advanced Topics}.=0A= =0A= \subsection{Adding the edit component}=0A= The first step is to add a new edit component. The code herein appears, = by courtesy of Mr Michael Roberts\footnote{ See Also his excellent = article in Useful resources }.=0A= =0A= \begin{verbatim}=0A= from wxPython.wx import *=0A= class MainWindow(wxFrame):=0A= """ We simply derive a new class of Frame. """=0A= def __init__(self,parent,id,title):=0A= wxFrame.__init__(self,parent,-4, title, size =3D ( 200,100),=0A= = style=3DwxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE)=0A= self.control =3D wxTextCtrl(self, 1, style=3DwxTE_MULTILINE)=0A= self.Show(true)=0A= app =3D wxPySimpleApp()=0A= frame =3D MainWindow(None, -1, "Sample editor")=0A= frame.Show(1)=0A= app.MainLoop()=0A= \end{verbatim}=0A= %class EditApp(wxApp):=0A= % def OnInit(self):=0A= % frame =3D MainWindow(None,-1,"A sample edit ctrl")=0A= % frame.Show(true)=0A= % self.SetTopWindow(frame)=0A= % return true=0A= %app =3D EditApp()=0A= %app.MainLoop()=0A= =0A= As you can see, it is not very difficult: All we have to do is to derive = \class{wxFrame} and then overload its \method{__init__} method. In this = method, we declare a new \class{wxTextCtrl}, which is a simple text edit = control. Here, You might probably want to have a look at the demoes that = are bundled with the install package, since they deal with all sort of = subjects and show very well how easy and rich wxPython is.=0A= =0A= \subsection{ Adding a menu}=0A= Every application should have a menu bar and a status bar. Let's add = that to ours:=0A= =0A= \begin{verbatim}=0A= from wxPython.wx import *=0A= ID_ABOUT=3D101=0A= ID_EXIT=3D110=0A= class MainWindow(wxFrame):=0A= def __init__(self,parent,id,title):=0A= wxFrame.__init__(self,parent,-4, title, size =3D ( 200,100),=0A= = style=3DwxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE)=0A= self.control =3D wxTextCtrl(self, 1, style=3DwxTE_MULTILINE)=0A= self.CreateStatusBar() # A Statusbar in the bottom of the window=0A= # Setting up the menu.=0A= filemenu=3D wxMenu()=0A= filemenu.Append(ID_ABOUT, "&About"," Information about this = program")=0A= filemenu.AppendSeparator()=0A= filemenu.Append(ID_EXIT,"E&xit"," Terminate the program")=0A= # Creating the menubar.=0A= menuBar =3D wxMenuBar()=0A= menuBar.Append(filemenu,"&File") # Adding the "filemenu" to the = MenuBar=0A= self.SetMenuBar(menuBar) # Adding the MenuBar to the Frame = content.=0A= =0A= self.Show(true)=0A= app =3D wxPySimpleApp()=0A= frame =3D MainWindow(None, -1, "Sample editor")=0A= frame.Show(1)=0A= app.MainLoop()=0A= \end{verbatim}=0A= =0A= The only little problem is that our application does little more that = showing our new menu: As it is, our menu is a deadborn deprived of any = reaction. Let's implement reactions into our program:=0A= =0A= \subsection{ Practical event handling}=0A= Reacting to events in wxPython is called \keyword{event handling}. = Flexible event handling is one of the biggest strengths of wxPython. We = are going to present practical basic event handling and we'll discuss = later in \emph{advanced topics}, the why and how.=0A= An event is a small message sent by wxPython to your application to = signify that "something" has happened \footnote{the mouse has been = moved, a key has been pressed, the user has popped up the menu, = everything you might possibly think of...}.=0A= Most often, in wxPython, all you have to do, is to "connect" an event = with a particular method.=0A= This is done by calling the pseudo methods \method{EVT_*}. By instance:=0A= \begin{verbatim}=0A= EVT_MENU(self, ID_ABOUT, self.OnAbout )=0A= \end{verbatim}=0A= In other words, from now on, any menu selection event with ID, ID_ABOUT = that is sent to window \code{self}, will be passed to the method = \method{self.OnAbout}.=0A= The latter method has the general declaration:=0A= \begin{verbatim}=0A= def OnAbout(self, event):=0A= ...=0A= \end{verbatim}=0A= where event is an instance of a subclass of wxEvent.=0A= Let's now have a look at what it is like in our application:=0A= =0A= \begin{verbatim}=0A= from wxPython.wx import *=0A= ID_ABOUT=3D101=0A= ID_EXIT=3D110=0A= class MainWindow(wxFrame):=0A= def __init__(self,parent,id,title):=0A= wxFrame.__init__(self,parent,-4, title, size =3D ( 200,100), = style=3DwxDEFAULT_FRAME_STYLE|=0A= wxNO_FULL_REPAINT_ON_RESIZE)=0A= self.control =3D wxTextCtrl(self, 1, style=3DwxTE_MULTILINE)=0A= self.CreateStatusBar() # A Statusbar in the bottom of the window=0A= # Setting up the menu.=0A= filemenu=3D wxMenu()=0A= filemenu.Append(ID_ABOUT, "&About"," Information about this = program")=0A= filemenu.AppendSeparator()=0A= filemenu.Append(ID_EXIT,"E&xit"," Terminate the program")=0A= # Creating the menubar.=0A= menuBar =3D wxMenuBar()=0A= menuBar.Append(filemenu,"&File") # Adding the "filemenu" to the = MenuBar=0A= self.SetMenuBar(menuBar) # Adding the MenuBar to the Frame = content.=0A= EVT_MENU(self, ID_ABOUT, self.OnAbout) # attach the menu-event = ID_ABOUT to the =0A= # method self.OnAbout=0A= EVT_MENU(self, ID_EXIT, self.OnExit) # attach the menu-event = ID_EXIT to the=0A= # method self.OnExit=0A= self.Show(true)=0A= def OnAbout(self,e):=0A= d=3D wxMessageDialog( self, " A sample editor \n"=0A= " in wxPython","About Sample Editor", wxOK) =0A= # Create a message dialog box=0A= d.ShowModal() # Shows it=0A= d.Destroy() # finally destroy it when finished.=0A= def OnExit(self,e):=0A= self.Close(true) # Close the frame.=0A= app =3D wxPySimpleApp()=0A= frame =3D MainWindow(None, -1, "Sample editor")=0A= frame.Show(1)=0A= app.MainLoop()=0A= \end{verbatim}=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \subsection{More magic}=0A= Of course an editor is useless if it is not able to save or open = documents. That's where Common dialogs come in. Those dialogs are those = offered by the underlying platform so that your application will exactly = look like a native application. =0A= Here is the implementation of the OnOpen method in \class{MainWindow} :=0A= \begin{verbatim}=0A= def OnOpen(self,e):=0A= """ Open a file"""=0A= dlg =3D wxFileDialog(self, "Choose a file", self.dirname, "", = "*.*", wxOPEN)=0A= if dlg.ShowModal() =3D=3D wxID_OK:=0A= self.filename=3Ddlg.GetFilename()=0A= self.dirname=3Ddlg.GetDirectory()=0A= f=3Dopen(self.dirname+'\\'+self.filename,'r') =0A= self.control.SetValue(f.read())=0A= f.close()=0A= dlg.Destroy()=0A= \end{verbatim}=0A= This method works just in three steps:=0A= \begin{itemize}=0A= \item First, we create the dialog by calling the appropriate Constructor.=0A= \item Then, we call the \method{ShowModal} method, that does all the = real work and returns a value corresponding to what the user has pressed = ( OK button or Cancel)=0A= \item If necessary, we retrieve the filename and the directory of the = selected file and we load it into the editor. Finally, we destroy the = dialog.=0A= \end{itemize}=0A= =0A= Normally, you should now be able to add the corresponding entry into the = menu and connect it to the \method{OnOpen} method.=0A= Find the complete source in appendix A.=0A= =0A= \subsection{Possible extensions}=0A= Of course, this program is far from being a decent editor. But adding = other features should not be more difficult than what has already been = done.=0A= You might take inspiration in the demoes that are bundled with wxPython:=0A= \begin{itemize}=0A= \item Drag and Drog.=0A= \item MDI=0A= \item Tabview/multifiles=0A= \item Find/Replace dialog=0A= \item Print dialog=0A= \item Macro-commands in python ( using the \function{eval} function)=0A= \item etc ...=0A= \end{itemize}=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \section{Advanced topics}=0A= \subsection{Events}=0A= Events are really one of the \emph{key feature} of wxPython. =0A= % TO BE CONTINUED=0A= \subsection{Scintilla}=0A= =0A= % TO BE CONTINUED=0A= \subsection{Boa-constructor}=0A= Boa-constructor is a RAD IDE for wxPython. =0A= % TO BE CONTINUED=0A= \subsection{multithreading}=0A= % Why in what way ?=0A= % TO BE CONTINUED=0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \section{Useful resources}=0A= =0A= \begin{definitions}=0A= =0A= \term{\url{http://wxPython.org/} }=0A= To start with, a very obvious website but you can also have a look in = the demo shipped in with the wxPython package. It's full of very useful = examples approaching nearly all the subjects you can think of. How to = run the demo:=0A= \begin{itemize}=0A= \item{under windows} Simply select the program Run The Demo in the = submenu wxPython of the start menu.=0A= \item{under linux} find the demo directory in the source distribution = and run "python demo.py"=0A= \end{itemize}=0A= =0A= \term{\url{http://wxwindows.org/} }=0A= You can also try to find directly information on the wxWindows website - = Although wxPython's documentation contains all wxWindows', so it's a bit = useless to go there, if you have had a look at wxPython's in the first = place. =0A= \term{\url{http://wxpython.org/maillist.php } }=0A= The wxPython mailing lists.=0A= =0A= \term{\url{http://boa-constructor.sourceforge.net/} }=0A= Boa-constructor is a RAD GUI building IDE for wxPython.=0A= =0A= \term{\url{http://www-106.ibm.com/developerworks/library/l-wxpy/index.htm= l} }=0A= An excellent article for newbies=0A= =0A= \term{\url{http://www.oreillynet.com/pub/a/Python/excerpts/chpt20/wxpytho= n.html} }=0A= Last but not least: The book "Python Programming on Win32 using = WxPython" of Mark Hammond and Andy Robinson has an entire (excellent) = chapter on wxPython .=0A= =0A= \term{\url{http://www.scintilla.org/} }=0A= Scintilla is a complete editing component for which wxPython offers = bindings (a control named \class{wxStyledTextCtrl2} ). =0A= =0A= \term{\url{http://www.python.org/} }=0A= The reference website relative to the python community.=0A= =0A= \term{\url{http://www.crosswinds.net/\~agauld} }=0A= A python tutorial.=0A= \end{definitions}=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{As a conclusion- slithering our way to the future of GUI-apps}=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= \section{contributors}=0A= \begin{itemize}=0A= \item The wxPython community=0A= \item Lucas Bruand=0A= \item Rob CakeBread=0A= \item Charlie Derr=0A= \item Robin Dunn=0A= \item Michael Roberts=0A= \end{itemize}=0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0A= =0A= \section{Acknowledgements}=0A= =0A= =0A= % = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=