Doc mods; fixed return non-processing problem; fixed toolbar sizing problems
(incl. MDI area clipping); put wxPrintPaperDatabase, wxPrintPaperType into prntbase.cpp since it's needed in non-PostScript WIN16 for the generic page setup dialog; corrected some 16-bit makefiles git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1831 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -3,15 +3,17 @@
|
||||
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||
\setfooter{\thepage}{}{}{}{}{\thepage}%
|
||||
|
||||
This addendum is written by Robin Dunn, author of the wxPython wrapper
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
\section{What is wxPython?}\label{wxpwhat}
|
||||
|
||||
wxPython is a blending of the wxWindows GUI classes and the
|
||||
wxPython is a blending of the wxWindows GUI classes and the
|
||||
\urlref{Python}{http://www.python.org/} programming language.
|
||||
|
||||
\wxheading{Python}
|
||||
|
||||
So what is Python? Go to
|
||||
So what is Python? Go to
|
||||
\urlref{http://www.python.org}{http://www.python.org}
|
||||
to learn more, but in a nutshell Python is an interpreted,
|
||||
interactive, object-oriented programming language. It is often
|
||||
@@ -43,18 +45,17 @@ applications, or in situations where Python is embedded in a C++
|
||||
application as an internal scripting or macro language.
|
||||
|
||||
Currently wxPython is available for Win32 platforms and the GTK
|
||||
toolkit (wxGTK) on most *nix/X-windows platforms. The effort to
|
||||
enable wxPython for wxMotif will begin shortly. See \helpref{Building
|
||||
Python}{wxpbuild} for details about getting wxPython working for you.
|
||||
toolkit (wxGTK) on most Unix/X-windows platforms. The effort to
|
||||
enable wxPython for wxMotif will begin shortly. See \helpref{Building Python}{wxpbuild} for
|
||||
details about getting wxPython working for you.
|
||||
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
\section{Why use wxPython?}\label{wxpwhy}
|
||||
|
||||
|
||||
So why would you want to use wxPython over just C++ and wxWindows?
|
||||
Personally I prefer using Python for everything. I only use C++ when
|
||||
I absolutly have to eek more performance out of an algorithm, and even
|
||||
Personally I prefer using Python for everything. I only use C++ when
|
||||
I absolutely have to eek more performance out of an algorithm, and even
|
||||
then I ususally code it as an extension module and leave the majority
|
||||
of the program in Python.
|
||||
|
||||
@@ -66,7 +67,6 @@ application in a few hours with Python that would normally take a few
|
||||
days or longer with C++. Converting a wxPython app to a C++/wxWindows app
|
||||
should be a straight forward task.
|
||||
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
\section{Other Python GUIs}\label{wxpother}
|
||||
|
||||
@@ -118,7 +118,6 @@ cross-platform compatible. See \urlref{this
|
||||
link}{http://www.python.org/download/Contributed.html\#Graphics}
|
||||
for a listing of a few of them.
|
||||
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
\section{Building wxPython}\label{wxpbuild}
|
||||
|
||||
@@ -135,7 +134,7 @@ make won't attempt to build them from the .i files.
|
||||
I added a few minor features to SWIG to control some of the code
|
||||
generation. If you want to play around with this the patches are in
|
||||
wxPython/SWIG.patches and they should be applied to the 1.1p5 version
|
||||
of SWIG. These new patches are documented at
|
||||
of SWIG. These new patches are documented at
|
||||
\urlref{this site}{http://starship.skyport.net/crew/robind/python/\#swig},
|
||||
and they should also end up in the 1.2 version of SWIG.
|
||||
|
||||
@@ -146,10 +145,9 @@ should be named wxPython.) You can control where the build process
|
||||
will dump wxPython by setting the \tt{TARGETDIR} makefile variable.
|
||||
The default is \tt{\$(WXWIN)/utils/wxPython}. If you leave it here
|
||||
then you should add \tt{\$(WXWIN)/utils} to your \tt{PYTHONPATH}.
|
||||
However, you may prefer to use something that is already on your
|
||||
However, you may prefer to use something that is already on your
|
||||
\tt{PYTHONPATH}, such as the \tt{site-packages} directory on Unix
|
||||
systems.
|
||||
|
||||
systems.
|
||||
|
||||
\wxheading{Win32}
|
||||
|
||||
@@ -163,34 +161,26 @@ specified below.
|
||||
\item Build wxWindows with \tt{wxUSE_RESOURCE_LOADING_IN_MSW} set to 1 in
|
||||
\tt{include/wx/msw/setup.h} so icons can be loaded dynamically. While
|
||||
there, make sure \tt{wxUSE_OWNER_DRAWN} is also set to 1.
|
||||
|
||||
\item Change into the \tt{\$(WXWIN)/utils/wxPython/src} directory.
|
||||
|
||||
\item Edit makefile.vc and specify where your python installation is at.
|
||||
You may also want to fiddle with the \tt{TARGETDIR} variable as described
|
||||
above.
|
||||
|
||||
\item Run \tt{nmake -f makefile.vc}
|
||||
|
||||
\item If it builds successfully, congratulations! Move on to the next
|
||||
step. If not then you can try mailing the wxwin-developers list for
|
||||
help. Also, I will always have a pre-built win32 version of this extension module at
|
||||
help. Also, I will always have a pre-built win32 version of this extension module at
|
||||
\urlref{http://alldunn.com/wxPython}{http://alldunn.com/wxPython}.
|
||||
|
||||
\item Change to the \tt{\$(WXWIN)/utils/wxPython/tests} directory.
|
||||
|
||||
\item Try executing the test programs. Note that some of these print
|
||||
diagnositc or test info to standard output, so they will require the
|
||||
console version of python. For example:
|
||||
|
||||
\tt{python test1.py}
|
||||
\tt{python test1.py}
|
||||
|
||||
To run them without requiring a console, you can use the \tt{pythonw.exe}
|
||||
version of Python either from the command line or from a shortcut.
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\wxheading{Unix}
|
||||
|
||||
These directions assume that you have already successfully built
|
||||
@@ -203,29 +193,23 @@ with the development libraries, etc. that you will need to install.
|
||||
|
||||
\begin{enumerate}\itemsep=0pt
|
||||
\item Change into the \tt{\$(WXWIN)/utils/wxPython/src} directory.
|
||||
|
||||
\item Edit \tt{Setup.in} and ensure that the flags, directories, and toolkit
|
||||
options are correct, (hopefully this will be done by \tt{configure}
|
||||
soon.) See the above commentary about \tt{TARGETDIR}. There are a
|
||||
few sample Setup.in.[platform] files provided.
|
||||
|
||||
\item Run this command to generate a makefile:
|
||||
|
||||
\tt{make -f Makefile.pre.in boot}
|
||||
\tt{make -f Makefile.pre.in boot}
|
||||
|
||||
\item Once you have the \tt{Makefile}, run \bftt{make} to build and then
|
||||
\item Once you have the \tt{Makefile}, run \bftt{make} to build and then
|
||||
\bftt{make install} to install the wxPython extension module.
|
||||
|
||||
\item Change to the \tt{\$(WXWIN)/utils/wxPython/tests} directory.
|
||||
|
||||
\item Try executing the test programs. For example:
|
||||
|
||||
\tt{python test1.py}
|
||||
|
||||
\tt{python test1.py}
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
\section{Using wxPython}\label{wxpusing}
|
||||
|
||||
@@ -325,13 +309,14 @@ it by issuing this command:
|
||||
\end{verbatim}
|
||||
\hrule
|
||||
|
||||
\wxheading{Things to notice:}\begin{enumerate}\itemsep=0pt
|
||||
\wxheading{Things to notice}
|
||||
|
||||
\begin{enumerate}\itemsep=0pt
|
||||
\item At line 2 the wxPython classes, constants, and etc. are imported
|
||||
into the current module's namespace. If you prefer to reduce
|
||||
namespace polution you can use "\tt{from wxPython import wx}" and
|
||||
then access all the wxPython identifiers through the wx module, for
|
||||
example, "\tt{wx.wxFrame}".
|
||||
|
||||
\item At line 13 the frame's sizing and moving events are connected to
|
||||
methods of the class. These helper functions are intended to be like
|
||||
the event table macros that wxWindows employs. But since static event
|
||||
@@ -339,20 +324,17 @@ tables are impossible with wxPython, we use helpers that are named the
|
||||
same to dynamically build the table. The only real difference is
|
||||
that the first arguemnt to the event helpers is always the window that
|
||||
the event table entry should be added to.
|
||||
|
||||
\item Notice the use of \tt{wxDLG_PNT} and \tt{wxDLG_SZE} in lines 19
|
||||
\item Notice the use of \tt{wxDLG\_PNT} and \tt{wxDLG\_SZE} in lines 19
|
||||
- 29 to convert from dialog units to pixels. These helpers are unique
|
||||
to wxPython since Python can't do method overloading like C++.
|
||||
|
||||
\item There is an \tt{OnCloseWindow} method at line 34 but no call to
|
||||
EVT_CLOSE to attach the event to the method. Does it really get
|
||||
called? The answer is, yes it does. This is because many of the
|
||||
EVT\_CLOSE to attach the event to the method. Does it really get
|
||||
called? The answer is, yes it does. This is because many of the
|
||||
\em{standard} events are attached to windows that have the associated
|
||||
\em{standard} method names. I have tried to follow the lead of the
|
||||
C++ classes in this area to determine what is \em{standard} but since
|
||||
that changes from time to time I can make no guarentees, nor will it
|
||||
be fully documented. When in doubt, use an EVT_*** function.
|
||||
|
||||
be fully documented. When in doubt, use an EVT\_*** function.
|
||||
\item At lines 17 to 21 notice that there are no saved references to
|
||||
the panel or the static text items that are created. Those of you
|
||||
who know Python might be wondering what happens when Python deletes
|
||||
@@ -361,16 +343,14 @@ don't. Remember that in wxPython the Python objects are just shadows of the
|
||||
coresponding C++ objects. Once the C++ windows and controls are
|
||||
attached to their parents, the parents manage them and delete them
|
||||
when necessary. For this reason, most wxPython objects do not need to
|
||||
have a __del__ method that explicitly causes the C++ object to be
|
||||
have a \_\_del\_\_ method that explicitly causes the C++ object to be
|
||||
deleted. If you ever have the need to forcibly delete a window, use
|
||||
the Destroy() method as shown on line 36.
|
||||
|
||||
\item Just like wxWindows in C++, wxPython apps need to create a class
|
||||
derived from \tt{wxApp} (line 56) that implements a method named
|
||||
derived from \tt{wxApp} (line 56) that implements a method named
|
||||
\tt{OnInit}, (line 59.) This method should create the application's
|
||||
main window (line 62) and use \tt{wxApp.SetTopWindow()} (line 66) to
|
||||
inform wxWindows about it.
|
||||
|
||||
\item And finally, at line 72 an instance of the application class is
|
||||
created. At this point wxPython finishes initializing itself, and calls
|
||||
the \tt{OnInit} method to get things started. (The zero parameter here is
|
||||
@@ -378,11 +358,8 @@ a flag for functionality that isn't quite implemented yet. Just
|
||||
ignore it for now.) The call to \tt{MainLoop} at line 73 starts the event
|
||||
loop which continues until the application terminates or all the top
|
||||
level windows are closed.
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
\section{wxWindows classes implemented in wxPython}\label{wxpclasses}
|
||||
|
||||
@@ -520,7 +497,7 @@ as possible to the C++ spec over time.
|
||||
\section{Where to go for help}\label{wxphelp}
|
||||
|
||||
Since wxPython is a blending of multiple technologies, help comes from
|
||||
multiple sources. See
|
||||
multiple sources. See
|
||||
\urlref{http://alldunn.com/wxPython}{http://alldunn.com/wxPython} for details on
|
||||
various sources of help, but probably the best source is the
|
||||
wxPython-users mail list. You can view the archive or subscribe by
|
||||
@@ -532,8 +509,3 @@ Or you can send mail directly to the list using this address:
|
||||
|
||||
wxpython-users@starship.python.net
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user