regen ReST docs

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42102 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2006-10-18 23:46:44 +00:00
parent 7b61ea68e2
commit 974a50f1bb
9 changed files with 3107 additions and 462 deletions

View File

@@ -3,18 +3,300 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
<title>Building wxPython 2.6 for Development and Testing</title>
<link rel="stylesheet" href="default.css" type="text/css" />
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>Building wxPython 2.7 for Development and Testing</title>
<style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="building-wxpython-2-6-for-development-and-testing">
<h1 class="title">Building wxPython 2.6 for Development and Testing</h1>
<div class="document" id="building-wxpython-2-7-for-development-and-testing">
<h1 class="title">Building wxPython 2.7 for Development and Testing</h1>
<p>This file describes how I build wxWidgets and wxPython while doing
development and testing, and is meant to help other people that want
to do the same thing. I'll assume that you are using either a CVS
snapshot from <a class="reference" href="http://wxWidgets.org/snapshots/">http://wxWidgets.org/snapshots/</a>, a checkout from CVS, or
one of the released wxPython-src-2.6.* tarballs. I'll also assume that
one of the released wxPython-src-2.7.* tarballs. I'll also assume that
you know your way around your system, the compiler, etc. and most
importantly, that you know what you are doing! ;-)</p>
<p>If you want to also install the version of wxPython you build to be in
@@ -28,14 +310,14 @@ may already have installed.</p>
<p>If you want to make changes to any of the <tt class="docutils literal"><span class="pre">*.i</span></tt> files, (SWIG
interface definition files,) or to regenerate the extension sources or
renamer modules, then you will need an up to date version of SWIG,
plus some patches. Get the sources for version 1.3.24, and then apply
plus some patches. Get the sources for version 1.3.29, and then apply
the patches in wxPython/SWIG and then build SWIG like normal. See the
README.txt in the wxPython/SWIG dir for details about each patch and
also info about those that may already have been applied to the SWIG
sources. If you install this build of SWIG to a location that is not
on the PATH (so it doesn't interfere with an existing SWIG install for
example) then you can set a setup.py command-line variable named SWIG
to be the full path name of the executable and the wxPython build will
example) then you can use a setup.py command-line option named SWIG
set to the full path name of the executable and the wxPython build will
use it. See below for an example.</p>
<p>In the text below I'll use WXDIR with environment variable syntax
(either $WXDIR or %WXDIR%) to refer to the top level directory where
@@ -53,8 +335,8 @@ installed from one of the standard wxWidgets installers. With the
the APIs are allowed to change) there are often significant
differences between the W.X.Y release of wxWidgets and the W.X.Y.Z
release of wxPython.</p>
<div class="section" id="building-on-unix-like-systems-e-g-linux-and-os-x">
<h1><a name="building-on-unix-like-systems-e-g-linux-and-os-x">Building on Unix-like Systems (e.g. Linux and OS X)</a></h1>
<div class="section">
<h1><a id="building-on-unix-like-systems-e-g-linux-and-os-x" name="building-on-unix-like-systems-e-g-linux-and-os-x">Building on Unix-like Systems (e.g. Linux and OS X)</a></h1>
<p>These platforms are built almost the same way while in development
so I'll combine the descriptions about their build process here.
First we will build wxWidgets and install it to an out of the way
@@ -71,12 +353,13 @@ before:</p>
cd $WXDIR
mkdir bld
cd bld
../configure --prefix=/opt/wx/2.6 \
../configure --prefix=/opt/wx/2.7 \
--with-gtk \
--with-gnomeprint \
--with-opengl \
--enable-debug \
--enable-geometry \
--enable-graphics_ctx \
--enable-sound --with-sdl \
--enable-mediactrl \
--enable-display \
@@ -84,6 +367,15 @@ cd bld
</pre>
<p>On OS X of course you'll want to use --with-mac instead of
--with-gtk and --with-gnomeprint.</p>
<p>Notice that above I used a prefix option of &quot;/opt/wx/2.7&quot;. You can
use whatever path you want, such as a path in your HOME dir or even
one of the standard prefix paths such as /usr or /usr/local if you
like, but using /opt this way lets me easily have multiple versions
and ports of wxWidgets &quot;installed&quot; and makes it easy to switch
between them, without impacting any versions of wxWidgets that may
have been installed via an RPM or whatever. For the rest of the
steps below be sure to also substitute &quot;/opt/wx/2.7&quot; with whatever
prefix you choose for your build.</p>
<p><strong>NOTE</strong>: Due to a recent change there is currently a dependency
problem in the multilib builds of wxWidgets on OSX, so I have
switched to using a monolithic build. That means that all of the
@@ -101,23 +393,14 @@ it by changing the --with-gtk flag to specify it like this:</p>
--with-gtk=1 \
</pre>
<p>To make the wxWidgets build be unicode enabled (strongly
recommended if you are building with GTK2) then add the following.
When wxPython is unicode enabled then all strings that are passed
to wx functions and methods will first be converted to unicode
objects, and any 'strings' returned from wx functions and methods
will actually be unicode objects.:</p>
recommended unless you are building with GTK1) then add the
following flag. When wxPython is unicode enabled then all strings
that are passed to wx functions and methods will first be converted
to unicode objects, and any 'strings' returned from wx functions
and methods will actually be unicode objects.:</p>
<pre class="literal-block">
--enable-unicode \
</pre>
<p>Notice that I used a prefix of /opt/wx/2.6. You can use whatever
path you want, such as a path in your HOME dir or even one of the
standard prefix paths such as /usr or /usr/local if you like, but
using /opt this way lets me easily have multiple versions and ports
of wxWidgets &quot;installed&quot; and makes it easy to switch between them,
without impacting any versions of wxWidgets that may have been
installed via an RPM or whatever. For the rest of the steps below
be sure to also substitute &quot;/opt/wx/2.6&quot; with whatever prefix you
choose for your build.</p>
<p>If you want to use the image and zlib libraries included with
wxWidgets instead of those already installed on your system, (for
example, to reduce dependencies on 3rd party libraries) then you
@@ -130,16 +413,16 @@ can add these flags to the configure command:</p>
</pre>
</li>
<li><p class="first">To build and install wxWidgets you could just use the &quot;make&quot;
command but there are other libraries besides the main wxWidgets
libs that also need to be built so again I make a script to do it
all for me so I don't forget anything. This time it is called
&quot;.make&quot; (I use the leading &quot;.&quot; so when I do <tt class="docutils literal"><span class="pre">rm</span> <span class="pre">-r</span> <span class="pre">*</span></tt> in my build
dir I don't lose my scripts too.) This is what it looks like:</p>
command but there are a couple other libraries besides the main
wxWidgets libs that also need to be built so again I make a script
to do it all for me so I don't forget anything. This time it is
called &quot;.make&quot; (I use the leading &quot;.&quot; so when I do <tt class="docutils literal"><span class="pre">rm</span> <span class="pre">-r</span> <span class="pre">*</span></tt> in
my build dir I don't lose my scripts too.) This is what it looks
like:</p>
<pre class="literal-block">
make $* \
&amp;&amp; make -C contrib/src/animate $* \
&amp;&amp; make -C contrib/src/gizmos $* \
&amp;&amp; make -C contrib/src/stc $*
&amp;&amp; make -C contrib/src/stc $*
</pre>
<p>So you just use .make as if it where make, but don't forget to set
the execute bit on .make first!:</p>
@@ -148,16 +431,16 @@ the execute bit on .make first!:</p>
.make install
</pre>
<p>When it's done you should have an installed set of files under
/opt/wx/2.6 containing just wxWidgets. Now to use this version of
wxWidgets you just need to add /opt/wx/2.6/bin to the PATH and set
LD_LIBRARY_PATH (or DYLD_LIBRARY_PATH on OS X) to /opt/wx/2.6/lib.</p>
/opt/wx/2.7 containing just wxWidgets. Now to use this version of
wxWidgets you just need to add /opt/wx/2.7/bin to the PATH and set
LD_LIBRARY_PATH (or DYLD_LIBRARY_PATH on OS X) to /opt/wx/2.7/lib.</p>
</li>
<li><p class="first">I also have a script to help me build wxPython and it is checked in
to the CVS as wxWidgets/wxPython/b, but you probably don't want to
use it as it's very cryptic and expects that you want to run SWIG,
so if you don't have the latest patched up version of SWIG then
you'll probably get stuck. So I'll just give the raw commands
instead.</p>
you'll probably get stuck. So in this document I'll just give the
raw commands instead.</p>
<p>We're not going to install the development version of wxPython with
these commands, so it won't impact your already installed version
of the latest release. You'll be able test with this version when
@@ -167,33 +450,33 @@ INSTALL.txt.</p>
<p>If you have more than one version of Python on your system then be
sure to use the version of Python that you want to use when running
wxPython programs to run the setup.py commands below. I'll be
using python2.3.</p>
<p>Make sure that the first wx-config found on the PATH is the one you
installed above, and then change to the $WXDIR/wxPython dir and
run the this command:</p>
using python2.5.</p>
<p>Make sure that the first wx-config found on the PATH is the one
belonging to the wxWidgets that you installed above, and then
change to the $WXDIR/wxPython dir and run the this command:</p>
<pre class="literal-block">
cd $WXDIR/wxPython
python2.3 setup.py build_ext --inplace --debug
python2.5 setup.py build_ext --inplace --debug
</pre>
<p>If your new wx-config script is not on the PATH, or there is some
other version of it found first, then you can add this to the
command line to ensure your new one is used instead:</p>
<pre class="literal-block">
WX_CONFIG=/opt/wx/2.6/bin/wx-config
WX_CONFIG=/opt/wx/2.7/bin/wx-config
</pre>
<p>By default setup.py will assume that you built wxWidgets to use
GTK2. If you built wxWidgets to use GTK 1.2.x then you should add
this flag to the command-line:</p>
<pre class="literal-block">
WXPORT=gtk
WXPORT=gtk
</pre>
<p>If you would like to do a Unicode enabled build (all strings sent
to or retruned from wx functions are Unicode objects) and your
wxWidgets was built with unicode enabled then add this flag:</p>
<p>Setup.py will assume by default that you are using a unicode build
of wxWidgets. If not then you can use this flag:</p>
<pre class="literal-block">
UNICODE=1
UNICODE=0
</pre>
<p>If you are wanting to have the source files regenerated with swig,
(only neccessary if you make modifications to the <tt class="docutils literal"><span class="pre">*.i</span></tt> files,)
then you need to turn on the USE_SWIG flag and optionally tell it
where to find the new swig executable, so add these flags:</p>
<pre class="literal-block">
@@ -203,28 +486,28 @@ USE_SWIG=1 SWIG=/opt/swig/bin/swig
being undeclared, or something similar then you can add
BUILD_GLCANVAS=0 to the setup.py command line to disable the
building of the glcanvas module.</p>
<p>When the setup.py command is done you should have fully populated
wxPython and wx packages locally in $WXDIR/wxPython/wxPython and
$WXDIR/wxPython/wx, with all the extension modules (<tt class="docutils literal"><span class="pre">*.so</span></tt> files)
located in the wx package.</p>
<p>When the setup.py command is done you should have a fully populated
(but uninstalled) wx package located in your $WXDIR/wxPython/wx
directory.</p>
</li>
<li><p class="first">To run code with the development version of wxPython, just set the
PYTHONPATH to the wxPython dir located in the source tree. For
example:</p>
<pre class="literal-block">
export LD_LIBRARY_PATH=/opt/wx/2.6/lib
export LD_LIBRARY_PATH=/opt/wx/2.7/lib
export PYTHONPATH=$WXDIR/wxPython
cd $WXDIR/wxPython/demo
python2.3 demo.py
python2.5 demo.py
</pre>
<p>OS X NOTE: You need to use &quot;pythonw&quot; on the command line to run
wxPython applications. This version of the Python executable is
part of the Python Framework and is allowed to interact with the
display. You can also double click on a .py or a .pyw file from
the finder (assuming that the PythonLauncher app is associated with
these file extensions) and it will launch the Framework version of
Python for you. For information about creating Applicaiton Bundles
of your wxPython apps please see the wiki and the mail lists.</p>
<p>OS X NOTE: Depending on your version of OS X and Python you may
need to use &quot;pythonw&quot; on the command line to run wxPython
applications. This version of the Python executable is part of the
Python Framework and is allowed to interact with the display. You
can also double click on a .py or a .pyw file from the finder
(assuming that the PythonLauncher app is associated with these file
extensions) and it will launch the Framework version of Python for
you. For information about creating Applicaiton Bundles of your
wxPython apps please see the wiki and the mail lists.</p>
<p>SOLARIS NOTE: If you get unresolved symbol errors when importing
wxPython and you are running on Solaris and building with gcc, then
you may be able to work around the problem by uncommenting a bit of
@@ -234,27 +517,28 @@ does not automatically add libgcc to the link step.</p>
</li>
</ol>
</div>
<div class="section" id="building-on-windows">
<h1><a name="building-on-windows">Building on Windows</a></h1>
<div class="section">
<h1><a id="building-on-windows" name="building-on-windows">Building on Windows</a></h1>
<p>The Windows builds currently require the use of Microsoft Visual C++.
Theoretically, other compilers (such as mingw32 or the Borland
compilers) can also be used but I've never done the work to make that
happen. If you want to try that then first you'll want to find out if
there are any tricks that have to be done to make Python extension
modules using that compiler, and then make a few changes to setup.py
to accommodate that. (And send the patches to me.) If you plan on
using VisualStudio.Net (a.k.a. MSVC 7.1) keep in mind that you'll also
have to build Python and any other extension modules that you use with
that compiler because a different version of the C runtime library is
used. The Python executable that comes from PythonLabs and the
wxPython extensions that I distribute are built with MSVC 6 with all
the Service Packs applied. This policy will change with Python 2.4
and MSVC 7.1 will be used starting with that version.</p>
to accommodate that. (And send the patches to me.)</p>
<p>The standard Python 2.3 and earlier are built with MS Visual C 6.0 and
so you must also build with MSVC 6 in order to be used with the stock
python.exe. If you woudl rather use a different version of
VisualStudio keep in mind that you'll also have to build Python and
any other extension modules that you use with that compiler because a
different version of the C runtime library is used. The stock Python
2.4 and 2.5 executables are built with MSVC 7.1, and the same rules
apply to it.</p>
<p>If you want to build a debuggable version of wxWidgets and wxPython you
will need to have also built a debug version of Python and any other
extension modules you need to use. You can tell if you have them
already if there is a _d in the file names, for example python_d.exe
or python23_d.dll. If you don't need to trace through the C/C++ parts
or python25_d.dll. If you don't need to trace through the C/C++ parts
of the code with the debugger then building the normal (or hybrid)
version is fine, and you can use the regular python executables with
it.</p>
@@ -277,7 +561,7 @@ differently.</p>
<p>The *.btm files are for 4NT and the others are for bash. They are:</p>
<pre class="literal-block">
.make/.make.btm Builds the main lib and the needed contribs
.mymake/.mymake.btm Builds just one lib, use by .make
.mymake/.mymake.btm Builds just one lib, used by .make
.makesetup.mk A makefile that will copy and edit setup.h
as needed for the different types of builds
</pre>
@@ -298,20 +582,18 @@ copy setup0.h setup.h
</li>
<li><p class="first">Edit %WXDIR%\include\wx\msw\setup.h and change a few settings:</p>
<pre class="literal-block">
wxDIALOG_UNIT_COMPATIBILITY 0
wxUSE_DEBUG_CONTEXT 1
wxUSE_MEMORY_TRACING 1
wxUSE_DEBUGREPORT 0
wxUSE_EXCEPTIONS 0
wxUSE_DIALUP_MANAGER 0
wxUSE_GRAPHICS_CONTEXT 1
wxUSE_GLCANVAS 1
wxUSE_POSTSCRIPT 1
wxUSE_AFM_FOR_POSTSCRIPT 0
wxUSE_DISPLAY 1
wxUSE_DEBUGREPORT 0
wxUSE_DIB_FOR_BITMAP 1
</pre>
<p>If you are using my build scripts then a few more settings will be
changed and then a copy of setup.h is placed in a subdir of
%WXWIN%\libvc_dll. If you are doing it by hand and making a
UNICODE build, then also change these:</p>
changed automatically and then a copy of setup.h is placed in a
subdir of %WXWIN%\libvc_dll. If you are doing it by hand and
making a UNICODE build, then also change these:</p>
<pre class="literal-block">
wxUSE_UNICODE 1
wxUSE_UNICODE_MSLU 1
@@ -357,11 +639,11 @@ clean up the build:</p>
executing nmake with a bunch of extra command line parameters.
The base set are:</p>
<pre class="literal-block">
nmake -f makefile.vc OFFICIAL_BUILD=1 SHARED=1 MONOLITHIC=1 USE_OPENGL=1
nmake -f makefile.vc OFFICIAL_BUILD=1 SHARED=1 MONOLITHIC=0 USE_OPENGL=1 USE_GDIPLUS=1
</pre>
<p>If doing a debug build then add:</p>
<pre class="literal-block">
BUILD=debug
BUILD=debug
</pre>
<p>otherwise add these:</p>
<pre class="literal-block">
@@ -372,14 +654,7 @@ DEBUG_FLAG=1 CXXFLAGS=/D__NO_VC_CRTDBG__ WXDEBUGFLAG=h BUILD=release
UNICODE=1 MSLU=1
</pre>
<p>Now, from the %WXDIR%\build\msw directory run nmake with your
selection of command-line flags as described above. Repeat this
same command from the following directories in order to build the
contrib libraries:</p>
<pre class="literal-block">
%WXDIR%\contrib\build\animate
%WXDIR%\contrib\build\gizmos
%WXDIR%\contrib\build\stc
</pre>
selection of command-line flags as described above.</p>
</li>
<li><p class="first">When that is all done it will have built the main wxWidgets DLLs
and also some of the contribs DLLs. There should be a ton of DLLs
@@ -398,13 +673,14 @@ build for (if you have more than one on your system) and to match
the MONOLITHIC flag with how you built wxWidgets:</p>
<pre class="literal-block">
cd %WXDIR%\wxPython
python setup.py build_ext --inplace MONOLITHIC=1
python setup.py build_ext --inplace MONOLITHIC=0
</pre>
<p>If you are wanting to have the source files regenerated with swig,
(only neccessary if you make modifications to the <tt class="docutils literal"><span class="pre">*.i</span></tt> files,)
then you need to turn on the USE_SWIG flag and optionally tell it
where to find the new swig executable, so add these flags:</p>
<pre class="literal-block">
USE_SWIG=1 SWIG=e:\projects\SWIG-cvs\swig.exe
USE_SWIG=1 SWIG=e:\\projects\\SWIG-1.2.29\\swig.exe
</pre>
<p>If you built a Unicode version of wxWidgets and want to also build
the Unicode version of wxPython then add this flag:</p>

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@ Recent Changes for wxPython
2.7.1.1
-------
*
* 18-Oct-2006
The following deprecated items have been removed:

View File

@@ -3,20 +3,302 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
<title>Installing wxPython 2.6 from Source</title>
<link rel="stylesheet" href="default.css" type="text/css" />
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>Installing wxPython 2.7 from Source</title>
<style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="installing-wxpython-2-6-from-source">
<h1 class="title">Installing wxPython 2.6 from Source</h1>
<div class="document" id="installing-wxpython-2-7-from-source">
<h1 class="title">Installing wxPython 2.7 from Source</h1>
<p>This document will describe the few differences and additions to the
content in the <a class="reference" href="BUILD.html">BUILD</a> document for installing wxPython built from
source. Please follow the intstructions both in this file and in
<a class="reference" href="BUILD.html">BUILD</a> to perform this task. Where there is overlap the items
described here will take precedence for doing installations.</p>
<div class="section" id="installing-on-unix-like-systems-not-os-x">
<h1><a name="installing-on-unix-like-systems-not-os-x">Installing on Unix-like Systems (not OS X)</a></h1>
<div class="section">
<h1><a id="installing-on-unix-like-systems-not-os-x" name="installing-on-unix-like-systems-not-os-x">Installing on Unix-like Systems (not OS X)</a></h1>
<ol class="arabic">
<li><p class="first">When building wxWidgets you need to decide if you want it to be a
private copy only accessed by wxPython, or if you would like it to
@@ -49,7 +331,7 @@ find the wxWidgets shared libraries. You can hard code the library
path into the binaries by using the rpath option when configuring
wxWidgets. For example:</p>
<pre class="literal-block">
--enable-rpath=/opt/wx/2.6/lib \
--enable-rpath=/opt/wx/2.7/lib \
</pre>
<p>SOLARIS NOTE: The --enable-rpath option may cause problems when
using wxGTK on Solaris when compiling wxPython as described below.
@@ -69,7 +351,7 @@ into the same bin dir used by Python by using this command, plus
whatever WXPORT, UNICODE, etc. settings you used for the initial
build step:</p>
<pre class="literal-block">
python2.3 setup.py install
python2.5 setup.py install
</pre>
<p>If you would like to install to some place besides the prefix where
Python is installed, (such as to your home directory) then you can
@@ -81,8 +363,8 @@ contained in the PYTHONPATH environment variable.</p>
</li>
</ol>
</div>
<div class="section" id="installing-on-os-x">
<h1><a name="installing-on-os-x">Installing on OS X</a></h1>
<div class="section">
<h1><a id="installing-on-os-x" name="installing-on-os-x">Installing on OS X</a></h1>
<p>Installing wxPython on OS X is nearly the same as the Unix
instructions above, except for a few small, but important details:</p>
<ol class="arabic simple">
@@ -112,8 +394,8 @@ app to run wxPython apps, otherwise the app will not be able to
fully use the GUI display.</li>
</ol>
</div>
<div class="section" id="installing-on-windows">
<h1><a name="installing-on-windows">Installing on Windows</a></h1>
<div class="section">
<h1><a id="installing-on-windows" name="installing-on-windows">Installing on Windows</a></h1>
<ol class="arabic">
<li><p class="first">Build wxWidgets and wxPython as described in BUILD.txt. If you
would rather have a version without the code that turns runtime
@@ -131,7 +413,7 @@ python setup.py install
found at runtime by the extension modules without requiring that
they be installed on the PATH:</p>
<pre class="literal-block">
copy %WXWIN%\lib\vc_dll\wx*h_*.dll c:\Python23\Lib\site-packages\wx
copy %WXWIN%\\lib\\vc_dll\\wx*h_*.dll c:\\Python25\\Lib\\site-packages\\wx
</pre>
</li>
</ol>

View File

@@ -3,9 +3,291 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>wxPython 2.6 Migration Guide</title>
<link rel="stylesheet" href="default.css" type="text/css" />
<style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="wxpython-2-6-migration-guide">
@@ -15,8 +297,8 @@
your programs to those changes. Be sure to also check in the <a class="reference" href="CHANGES.html">CHANGES</a>
file like usual to see info about the not so major changes and other
things that have been added to wxPython.</p>
<div class="section" id="wxname-change">
<h1><a name="wxname-change">wxName Change</a></h1>
<div class="section">
<h1><a id="wxname-change" name="wxname-change">wxName Change</a></h1>
<p>The <strong>wxWindows</strong> project and library is now known as
<strong>wxWidgets</strong>. Please see <a class="reference" href="http://www.wxwidgets.org/name.htm">here</a> for more details.</p>
<p>This won't really affect wxPython all that much, other than the fact
@@ -25,8 +307,8 @@ so mail list, CVS, and etc. addresses have also changed. We're going
to try and smooth the transition as much as possible, but I wanted you
all to be aware of this change if you run into any issues.</p>
</div>
<div class="section" id="module-initialization">
<h1><a name="module-initialization">Module Initialization</a></h1>
<div class="section">
<h1><a id="module-initialization" name="module-initialization">Module Initialization</a></h1>
<p>The import-startup-bootstrap process employed by wxPython was changed
such that wxWidgets and the underlying gui toolkit are <strong>not</strong>
initialized until the wx.App object is created (but before wx.App.OnInit
@@ -51,8 +333,8 @@ class constructors and also many toplevel functions and static methods
will now check that a wx.App object has already been created and will
raise a wx.PyNoAppError exception if not.</p>
</div>
<div class="section" id="swig-1-3">
<h1><a name="swig-1-3">SWIG 1.3</a></h1>
<div class="section">
<h1><a id="swig-1-3" name="swig-1-3">SWIG 1.3</a></h1>
<p>wxPython is now using SWIG 1.3.x from CVS (with several of my own
customizations added that I hope to get folded back into the main SWIG
distribution.) This has some far reaching ramifications:</p>
@@ -79,8 +361,8 @@ class type using something like isinstance(obj, wx.FooPtr) you will
need to change it to isinstance(obj, wx.Foo).</p>
</blockquote>
</div>
<div class="section" id="binding-events">
<h1><a name="binding-events">Binding Events</a></h1>
<div class="section">
<h1><a id="binding-events" name="binding-events">Binding Events</a></h1>
<p>All of the EVT_* functions are now instances of the wx.PyEventBinder
class. They have a __call__ method so they can still be used as
functions like before, but making them instances adds some
@@ -132,11 +414,11 @@ values:</p>
item = menu.Append(-1, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;)
self.Bind(wx.EVT_MENU, self.OnExit, item)
2.
2.
item = menu.Append(wx.ID_EXIT, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;)
self.Bind(wx.EVT_MENU, self.OnExit, item)
3.
3.
menu.Append(wx.ID_EXIT, &quot;E&amp;xit&quot;, &quot;Terminate the App&quot;)
self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
</pre>
@@ -167,8 +449,8 @@ def Unbind(self, event, source=None, id=wx.ID_ANY, id2=wx.ID_ANY):
&quot;&quot;&quot;
</pre>
</div>
<div class="section" id="the-wx-namespace">
<h1><a name="the-wx-namespace">The wx Namespace</a></h1>
<div class="section">
<h1><a id="the-wx-namespace" name="the-wx-namespace">The wx Namespace</a></h1>
<p>The second phase of the wx Namespace Transition has begun. That means
that the real names of the classes and other symbols do not have the
'wx' prefix and the modules are located in a Python package named
@@ -225,8 +507,8 @@ you rewrote the above sample using &quot;from wxPython.wx import * &quot;, the
old wxNames, and the old style of event binding it will still work
just fine.</p>
</div>
<div class="section" id="new-wx-dc-methods">
<h1><a name="new-wx-dc-methods">New wx.DC Methods</a></h1>
<div class="section">
<h1><a id="new-wx-dc-methods" name="new-wx-dc-methods">New wx.DC Methods</a></h1>
<p><strong>[Changed in 2.5.2.x]</strong> In wxPython 2.5.1.5 there was a new
implementation of the wx.DC Draw and other methods that broke
backwards compatibility in the name of consistency. That change has
@@ -240,7 +522,7 @@ FloodFill(self, x, y, colour, style = wx.FLOOD_SURFACE)
FoodFillPoint(self, pt, colour, style = wx.FLOOD_SURFACE)
GetPixel(self, x,y)
GetPixelPoint(self, pt)
GetPixelPoint(self, pt)
DrawLine(self, x1, y1, x2, y2)
DrawLinePoint(self, pt1, pt2)
@@ -289,7 +571,7 @@ DrawRotatedTextPoint(self, text, pt, angle)
bool Blit(self, xdest, ydest, width, height, sourceDC, xsrc, ysrc,
rop = wx.COPY, useMask = False, xsrcMask = -1, ysrcMask = -1)
BlitPointSize(self, destPt, sz, sourceDC, srcPt, rop = wx.COPY,
BlitPointSize(self, destPt, sz, sourceDC, srcPt, rop = wx.COPY,
useMask = False, srcPtMask = wxDefaultPosition)
@@ -299,8 +581,8 @@ SetClippingRegionAsRegion(self, region)
SetClippingRect(self, rect)
</pre>
</div>
<div class="section" id="building-extending-and-embedding-wxpython">
<h1><a name="building-extending-and-embedding-wxpython">Building, Extending and Embedding wxPython</a></h1>
<div class="section">
<h1><a id="building-extending-and-embedding-wxpython" name="building-extending-and-embedding-wxpython">Building, Extending and Embedding wxPython</a></h1>
<p>wxPython's setup.py script now expects to use existing libraries for
the contribs (gizmos, stc, xrc, etc.) rather than building local
copies of them. If you build your own copies of wxPython please be
@@ -339,8 +621,8 @@ are wrapped in the standard Py_(BEGIN|END)_ALLOW_THERADS may result in
wx event handlers being called (such as during the call to
os.startfile.)</p>
</div>
<div class="section" id="two-or-three-phase-create">
<h1><a name="two-or-three-phase-create">Two (or Three!) Phase Create</a></h1>
<div class="section">
<h1><a id="two-or-three-phase-create" name="two-or-three-phase-create">Two (or Three!) Phase Create</a></h1>
<p>If you use the Precreate/Create method of instantiating a window, (for
example, to set an extended style flag, or for XRC handlers) then
there is now a new method named PostCreate to help with transplanting
@@ -355,8 +637,8 @@ class MyDialog(wx.Dialog):
self.PostCreate(pre)
</pre>
</div>
<div class="section" id="sizers">
<h1><a name="sizers">Sizers</a></h1>
<div class="section">
<h1><a id="sizers" name="sizers">Sizers</a></h1>
<p>The hack allowing the old &quot;option&quot; keyword parameter has been removed.
If you use keyword args with wx.Sizer Add, Insert, or Prepend methods
then you will need to use the <tt class="docutils literal"><span class="pre">proportion</span></tt> name instead of
@@ -473,8 +755,8 @@ This can be done by calling <tt class="docutils literal"><span class="pre">SetBe
</ul>
</blockquote>
</div>
<div class="section" id="platforminfo">
<h1><a name="platforminfo">PlatformInfo</a></h1>
<div class="section">
<h1><a id="platforminfo" name="platforminfo">PlatformInfo</a></h1>
<p>Added wx.PlatformInfo which is a tuple containing strings that
describe the platform and build options of wxPython. This lets you
know more about the build than just the __WXPORT__ value that
@@ -495,8 +777,8 @@ way. If there are any other platform/toolkit/build flags that make
sense to add to this tuple please let me know.</p>
<p>BTW, wx.Platform will probably be deprecated in the future.</p>
</div>
<div class="section" id="activex">
<h1><a name="activex">ActiveX</a></h1>
<div class="section">
<h1><a id="activex" name="activex">ActiveX</a></h1>
<p>Lindsay Mathieson's newest <a class="reference" href="http://members.optusnet.com.au/~blackpaw1/wxactivex.html">wxActiveX</a> class has been wrapped into a new
extension module called wx.activex. It is very generic and dynamic
and should allow hosting of arbitray ActiveX controls within your
@@ -585,7 +867,7 @@ new window from being opened by the IE web browser control you can do
this in the handler for the iewin.EVT_NewWindow2 event:</p>
<pre class="literal-block">
def OnNewWindow2(self, evt):
evt.Cancel = True
evt.Cancel = True
</pre>
<p>So how do you know what methods, events and properties that an ActiveX
control supports? There is a funciton in wx.activex named GetAXInfo
@@ -596,8 +878,8 @@ output appended as a comment to the modules produced by the
genaxmodule tool. Beyond that you'll need to consult the docs
provided by the makers of the ActiveX control that you are using.</p>
</div>
<div class="section" id="png-images">
<h1><a name="png-images">PNG Images</a></h1>
<div class="section">
<h1><a id="png-images" name="png-images">PNG Images</a></h1>
<p>Prior to 2.5 the PNG image handler would convert all alpha channel
information to a mask when the image was loaded. Pixels that were
more than halfway transparent would be made fully transparent by the
@@ -619,8 +901,8 @@ fully transparent.</li>
</ul>
</blockquote>
</div>
<div class="section" id="ogl-is-dead-long-live-ogl">
<h1><a name="ogl-is-dead-long-live-ogl">OGL is dead! LONG LIVE OGL!</a></h1>
<div class="section">
<h1><a id="ogl-is-dead-long-live-ogl" name="ogl-is-dead-long-live-ogl">OGL is dead! LONG LIVE OGL!</a></h1>
<p><strong>[Changed in 2.5.2.x]</strong></p>
<p>The wx.ogl module was deprecated in version 2.5.2 in favor of the new
Python port of the OGL library located at wx.lib.ogl contributed by
@@ -664,11 +946,11 @@ class MyDividedShape(ogl.DividedShape):
...
def OnSizingEndDragLeft(self, pt, x, y, keys, attch):
ogl.DividedShape.OnSizingEndDragLeft(self, pt, x, y, keys, attch)
...
...
</pre>
</div>
<div class="section" id="obsolete-modules">
<h1><a name="obsolete-modules">Obsolete Modules</a></h1>
<div class="section">
<h1><a id="obsolete-modules" name="obsolete-modules">Obsolete Modules</a></h1>
<p>Instead of over a dozen separate extension modules linked together
into a single extension module, the &quot;core&quot; module is now just a few
extensions that are linked independently, and then merged together
@@ -718,8 +1000,8 @@ the objects in these modules only via the wx or wxPython.wx packages:</p>
<p>The help module no longer exists and the classes therein are now part
of the core module imported with wxPython.wx or the wx package.</p>
</div>
<div class="section" id="wx-taskbaricon">
<h1><a name="wx-taskbaricon">wx.TaskBarIcon</a></h1>
<div class="section">
<h1><a id="wx-taskbaricon" name="wx-taskbaricon">wx.TaskBarIcon</a></h1>
<p><strong>[Changed in 2.5.3.x]</strong></p>
<p>wx.TaskbarIcon now works on all three platforms, although for wxGTK it
depends on support from the Window Manager. On OS X the icon replaces
@@ -747,8 +1029,8 @@ wx.Dialogs.) If you don't destroy it then wxWidgets will assume that
you want the app to keep running with just the icon in the task bar
and the MainLoop will not exit.</p>
</div>
<div class="section" id="version-number-change">
<h1><a name="version-number-change">Version Number Change</a></h1>
<div class="section">
<h1><a id="version-number-change" name="version-number-change">Version Number Change</a></h1>
<p><strong>[Changed in 2.5.3.x]</strong></p>
<p>Starting with 2.5.3.0 the Unicode versions of wxPython will no longer
have a 'u' appended to the fourth component of the version number.
@@ -761,8 +1043,8 @@ if &quot;unicode&quot; in wx.PlatformInfo:
...
</pre>
</div>
<div class="section" id="multi-version-installs">
<h1><a name="multi-version-installs">Multi-Version Installs</a></h1>
<div class="section">
<h1><a id="multi-version-installs" name="multi-version-installs">Multi-Version Installs</a></h1>
<p><strong>[Changed in 2.5.3.x]</strong></p>
<p>Starting with 2.5.3.0 the wx and wxPython package directories will be
installed in a subdirectory of the site-packages directory, instead of
@@ -803,8 +1085,8 @@ version of wxPython that supports this, but there will be.</p>
<p>Please see this wiki page for more details, HowTo's and FAQ's:
<a class="reference" href="http://wiki.wxpython.org/index.cgi/MultiVersionInstalls">http://wiki.wxpython.org/index.cgi/MultiVersionInstalls</a></p>
</div>
<div class="section" id="miscellaneous-stuff">
<h1><a name="miscellaneous-stuff">Miscellaneous Stuff</a></h1>
<div class="section">
<h1><a id="miscellaneous-stuff" name="miscellaneous-stuff">Miscellaneous Stuff</a></h1>
<p>wxPyDefaultPosition and wxPyDefaultSize are gone. Use the
wxDefaultPosition and wxDefaultSize objects instead.</p>
<p>Similarly, the wxSystemSettings backwards compatibiility aliases for

View File

@@ -3,12 +3,294 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>The Py Manual</title>
<meta name="author" content="Patrick K. O'Brien" />
<meta name="organization" content="Orbtech" />
<meta name="date" content="2004-04-15" />
<link rel="stylesheet" href="default.css" type="text/css" />
<style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="the-py-manual">
@@ -30,8 +312,8 @@
<td>1.5</td></tr>
</tbody>
</table>
<div class="contents topic" id="contents">
<p class="topic-title first"><a name="contents">Contents</a></p>
<div class="contents topic">
<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="simple">
<li><a class="reference" href="#introduction" id="id4" name="id4">Introduction</a></li>
<li><a class="reference" href="#developer-reference" id="id5" name="id5">Developer Reference</a></li>
@@ -75,20 +357,20 @@
</li>
</ul>
</div>
<div class="section" id="introduction">
<h1><a class="toc-backref" href="#id4" name="introduction">Introduction</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id4" id="introduction" name="introduction">Introduction</a></h1>
<p>This document will show you how to use the Py programs and the Py
library of Python source code modules. Py is the new name for the
project that began as PyCrust. Py is officially part of <a class="reference" href="http://www.wxpython.org/">wxPython</a>,
and includes PyCrust, so PyCrust is no longer distributed separately.</p>
</div>
<div class="section" id="developer-reference">
<h1><a class="toc-backref" href="#id5" name="developer-reference">Developer Reference</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id5" id="developer-reference" name="developer-reference">Developer Reference</a></h1>
<p>Source code documentation for developers is available at:</p>
<p><a class="reference" href="http://www.orbtech.com/www/wx/epydoc/public/wx.py-module.html">http://www.orbtech.com/www/wx/epydoc/public/wx.py-module.html</a></p>
</div>
<div class="section" id="what-is-py">
<h1><a class="toc-backref" href="#id6" name="what-is-py">What is Py?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id6" id="what-is-py" name="what-is-py">What is Py?</a></h1>
<p>Besides being <a class="reference" href="http://www.wikipedia.org/wiki/Pie">a delicious dessert</a>, Py is the name for a collection
of whimsically-named Python programs and modules that began as the
PyCrust project. So Py is really several things: a set of standalone
@@ -99,8 +381,8 @@ do something, you might as well do it all the way, right?) Py uses
Python and wxPython, so it works equally well on Windows, Linux and
Mac OS X.</p>
</div>
<div class="section" id="pycrust-is-dead-long-live-py">
<h1><a class="toc-backref" href="#id7" name="pycrust-is-dead-long-live-py">PyCrust is dead! Long live Py!</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id7" id="pycrust-is-dead-long-live-py" name="pycrust-is-dead-long-live-py">PyCrust is dead! Long live Py!</a></h1>
<p>This project began with a program I created called PyCrust - an
interactive, graphical Python shell, developed using the wxPython GUI
toolkit. For about two years, PyCrust was hosted on <a class="reference" href="http://www.sf.net/projects/pycrust/">SourceForge</a>.
@@ -136,8 +418,8 @@ wxPython applications to provide similar services, either for your own
use during development, or as an interface for users of your programs.
These modules are the same ones used by all the Py programs.</p>
</div>
<div class="section" id="py-standalone-programs">
<h1><a class="toc-backref" href="#id8" name="py-standalone-programs">Py standalone programs</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id8" id="py-standalone-programs" name="py-standalone-programs">Py standalone programs</a></h1>
<p>These are the standalone applications in the Py collection:</p>
<ul class="simple">
<li>PyAlaCarte</li>
@@ -148,42 +430,42 @@ These modules are the same ones used by all the Py programs.</p>
<li>PyWrap</li>
</ul>
</div>
<div class="section" id="pyalacarte">
<h1><a class="toc-backref" href="#id9" name="pyalacarte">PyAlaCarte</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id9" id="pyalacarte" name="pyalacarte">PyAlaCarte</a></h1>
<p>PyAlaCarte is a Python source code editor. It is designed to have a
simple, single-file interface. As a standalone application, it is
good for simple, short editing tasks. But it is really meant to be
more of an example of how to embed the Py editor into a wxPython
application.</p>
</div>
<div class="section" id="pyalamode">
<h1><a class="toc-backref" href="#id10" name="pyalamode">PyAlaMode</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id10" id="pyalamode" name="pyalamode">PyAlaMode</a></h1>
<p>PyAlaMode is a Python source code editor.</p>
</div>
<div class="section" id="pycrust">
<h1><a class="toc-backref" href="#id11" name="pycrust">PyCrust</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id11" id="pycrust" name="pycrust">PyCrust</a></h1>
<p>PyCrust is an interactive, Python shell. But it's more than just a
shell. It includes a tabbed notebook containing a namespace tree
(PyFilling), and several other things.</p>
</div>
<div class="section" id="pyfilling">
<h1><a class="toc-backref" href="#id12" name="pyfilling">PyFilling</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id12" id="pyfilling" name="pyfilling">PyFilling</a></h1>
<p>PyFilling is a namespace viewer. It isn't really useful as a
standalone program, but it does illustrate how to make use of the
underlying <tt class="docutils literal"><span class="pre">filling</span></tt> module.</p>
</div>
<div class="section" id="pyshell">
<h1><a class="toc-backref" href="#id13" name="pyshell">PyShell</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id13" id="pyshell" name="pyshell">PyShell</a></h1>
<p>PyShell is an interactive, Python shell. It shares the same base code
as PyCrust, but doesn't have any of the extra features that appear in
the PyCrust notebook interface.</p>
<div class="figure">
<div class="image"><img alt="screenshots/PyShell.png" src="screenshots/PyShell.png" /></div>
<img alt="screenshots/PyShell.png" src="screenshots/PyShell.png" />
<p class="caption">PyShell running on Mandrake Linux.</p>
</div>
</div>
<div class="section" id="pywrap">
<h1><a class="toc-backref" href="#id14" name="pywrap">PyWrap</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id14" id="pywrap" name="pywrap">PyWrap</a></h1>
<p>PyWrap is a runtime utility that lets you run an existing wxPython
program with a PyCrust frame at the same time. Inside the PyCrust
shell namespace, the local variable <tt class="docutils literal"><span class="pre">app</span></tt> is assigned to your
@@ -191,8 +473,8 @@ application instance. In this way you can introspect your entire
application within the PyCrust shell, as well as the PyFilling
namespace viewer.</p>
</div>
<div class="section" id="py-modules">
<h1><a class="toc-backref" href="#id15" name="py-modules">Py modules</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id15" id="py-modules" name="py-modules">Py modules</a></h1>
<p>Py was designed to be modular. That means graphical code is kept
separate from non-graphical code, and many of the Py modules can be
used by other programs. Likewise, other programs can supply some of
@@ -202,8 +484,8 @@ application. As long as it supports the minimum functionality
required, PyCrust will work just as well with your interpreter as with
its default interpreter.</p>
</div>
<div class="section" id="projects-using-py">
<h1><a class="toc-backref" href="#id16" name="projects-using-py">Projects using Py</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id16" id="projects-using-py" name="projects-using-py">Projects using Py</a></h1>
<ul class="simple">
<li><a class="reference" href="http://conflictsolver.sourceforge.net/">Conflict Solver</a></li>
<li><a class="reference" href="http://www.gnumed.org/">Gnumed</a></li>
@@ -215,12 +497,12 @@ its default interpreter.</p>
<li><a class="reference" href="http://linus.yorktown.arlington.k12.va.us/CS/APCSC/student_sites/David_Mayo/wxGasp">wxGasp</a></li>
</ul>
</div>
<div class="section" id="history-of-changes">
<h1><a class="toc-backref" href="#id17" name="history-of-changes">History of changes</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id17" id="history-of-changes" name="history-of-changes">History of changes</a></h1>
<p>This section lists all the changes that have been made to the Py
programs and modules, since the beginning.</p>
<div class="section" id="id1">
<h2><a class="toc-backref" href="#id18" name="id1">0.9.5 (12/23/2005)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id18" id="id1" name="id1">0.9.5 (12/23/2005)</a></h2>
<p>Applied a series of enhancments by Franz Steinaeusler, Adi Sieker, and
Sebastian Haase, up until their 7-31-2005 version. (Their next
version broke some existing functionality, and added some confusing
@@ -261,7 +543,7 @@ place that then has to reach all over the place to do anything.</li>
<li>Enable editing of the startup python code, which will either be the
file pointed to by PYTHONSTARTUP or a file in the config dir if
PYTHONSTARTUP is not set in the environment.</li>
<li>Added an option to skip the running of the startup code when
<li>Added an option to skip the running of the startup code when
PyShell or PyCrust starts.</li>
<li>PyCrust adds a pp(item) function to the shell's namespace that
pretty prints the item in the Display tab of the notebook. Added
@@ -271,8 +553,8 @@ when popping up the call tip.</li>
<li>Added Find and Find-Next functions that use the wx.FindReplaceDialog.</li>
</ul>
</div>
<div class="section" id="to-2004">
<h2><a class="toc-backref" href="#id19" name="to-2004">0.9.4 (1/25/2004 to //2004)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id19" id="to-2004" name="to-2004">0.9.4 (1/25/2004 to //2004)</a></h2>
<p>Removed wxd decorators in favor of new SWIG-generated docstrings.</p>
<p>Removed docs tabs from crust interface:
* wxPython Docs
@@ -282,13 +564,13 @@ when popping up the call tip.</li>
<p>Changed default namespace of Shell to __main__.__dict__, instead of an
empty dictionary.</p>
</div>
<div class="section" id="to-1-24-2004">
<h2><a class="toc-backref" href="#id20" name="to-1-24-2004">0.9.3 (9/25/2003 to 1/24/2004)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id20" id="to-1-24-2004" name="to-1-24-2004">0.9.3 (9/25/2003 to 1/24/2004)</a></h2>
<p>Fun and games with dynamic renaming. Details of any other changes
were lost in the confusion. I'll try to do better in the future.</p>
</div>
<div class="section" id="to-9-25-2003">
<h2><a class="toc-backref" href="#id21" name="to-9-25-2003">0.9.2 (5/3/2003 to 9/25/2003)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id21" id="to-9-25-2003" name="to-9-25-2003">0.9.2 (5/3/2003 to 9/25/2003)</a></h2>
<p>Changed to the new prefix-less &quot;wx&quot; package:</p>
<pre class="literal-block">
import wx
@@ -330,8 +612,8 @@ def CanPaste(self):
return stc.StyledTextCtrl.CanPaste(self) and self.CanEdit()
</pre>
</div>
<div class="section" id="to-5-2-2003">
<h2><a class="toc-backref" href="#id22" name="to-5-2-2003">0.9.1 (3/21/2003 to 5/2/2003)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id22" id="to-5-2-2003" name="to-5-2-2003">0.9.1 (3/21/2003 to 5/2/2003)</a></h2>
<p>PyCrust is dead! Long live Py!</p>
<ul class="simple">
<li>Renamed <tt class="docutils literal"><span class="pre">PyCrust</span></tt> package to <tt class="docutils literal"><span class="pre">py</span></tt>.</li>
@@ -365,8 +647,8 @@ base.</p>
The current implementation of wxSTC can now handle lists this big.</p>
<p>Improved handling of <tt class="docutils literal"><span class="pre">sys.path</span></tt> to mimic the standard Python shell.</p>
</div>
<div class="section" id="to-3-20-2003">
<h2><a class="toc-backref" href="#id23" name="to-3-20-2003">0.9 (2/27/2003 to 3/20/2003)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id23" id="to-3-20-2003" name="to-3-20-2003">0.9 (2/27/2003 to 3/20/2003)</a></h2>
<p>Added fontIncrease, fontDecrease, fontDefault signals, receivers and
keybindings:</p>
<pre class="literal-block">
@@ -397,8 +679,8 @@ except NameError:
</pre>
<p>Added <tt class="docutils literal"><span class="pre">wxd</span></tt> directory with decoration classes.</p>
</div>
<div class="section" id="to-2-26-2003">
<h2><a class="toc-backref" href="#id24" name="to-2-26-2003">0.8.2 (1/5/2003 to 2/26/2003)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id24" id="to-2-26-2003" name="to-2-26-2003">0.8.2 (1/5/2003 to 2/26/2003)</a></h2>
<p>Wrapped <tt class="docutils literal"><span class="pre">sys.ps1</span></tt>, <tt class="docutils literal"><span class="pre">sys.ps2</span></tt>, and <tt class="docutils literal"><span class="pre">sys.ps3</span></tt> in <tt class="docutils literal"><span class="pre">str()</span></tt>.
(Thanks, Kieran Holland.)</p>
<p>Fixed minor things found by PyChecker.</p>
@@ -432,8 +714,8 @@ func = 3 .
</pre>
<p>More Filling!!! The namespace tree is now dynamically updated.</p>
</div>
<div class="section" id="to-12-25-2002">
<h2><a class="toc-backref" href="#id25" name="to-12-25-2002">0.8.1 (12/20/2002 to 12/25/2002)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id25" id="to-12-25-2002" name="to-12-25-2002">0.8.1 (12/20/2002 to 12/25/2002)</a></h2>
<p>Improved keyboard handling with Autocomplete active. You can now use
Enter as well as Tab to select an item from the list.</p>
<p>Disabled autocomplete for lists of 2000 items or more. The current
@@ -444,8 +726,8 @@ coming directly from the source code. (Hmmm. Sounds like someone is
doing some decorating. I wonder where that would be helpful? &lt;wink&gt;)</p>
<p>Fixed handling of icon. Added <tt class="docutils literal"><span class="pre">images.py</span></tt> file.</p>
</div>
<div class="section" id="to-12-16-2002">
<h2><a class="toc-backref" href="#id26" name="to-12-16-2002">0.8 (10/29/2002 to 12/16/2002)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id26" id="to-12-16-2002" name="to-12-16-2002">0.8 (10/29/2002 to 12/16/2002)</a></h2>
<p>Added &quot;help&quot; to startup banner info.</p>
<p>Made all <tt class="docutils literal"><span class="pre">wx</span></tt> and <tt class="docutils literal"><span class="pre">stc</span></tt> imports explicit. No more <tt class="docutils literal"><span class="pre">import</span> <span class="pre">*</span></tt>.</p>
<p>Replaced use of the <tt class="docutils literal"><span class="pre">wx</span></tt> module's <tt class="docutils literal"><span class="pre">true</span></tt> and <tt class="docutils literal"><span class="pre">false</span></tt> with
@@ -471,8 +753,8 @@ Platform: linux2
<p>Added <tt class="docutils literal"><span class="pre">time.sleep()</span></tt> in <tt class="docutils literal"><span class="pre">readline()</span></tt> and <tt class="docutils literal"><span class="pre">OnIdle()</span></tt> event
handler to free up the CPU.</p>
</div>
<div class="section" id="to-8-27-2002">
<h2><a class="toc-backref" href="#id27" name="to-8-27-2002">0.7.2 (2/22/2002 to 8/27/2002)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id27" id="to-8-27-2002" name="to-8-27-2002">0.7.2 (2/22/2002 to 8/27/2002)</a></h2>
<p>Tweaked <tt class="docutils literal"><span class="pre">getAttributeNames()</span></tt> to pick up a few more attributes:</p>
<pre class="literal-block">
'__bases__', '__class__', '__dict__', '__name__', 'func_closure',
@@ -509,8 +791,8 @@ to Raul Cota for pointing this out.</p>
boxes. Renamed <tt class="docutils literal"><span class="pre">readIn</span></tt> to <tt class="docutils literal"><span class="pre">readline</span></tt> and <tt class="docutils literal"><span class="pre">readRaw</span></tt> to
<tt class="docutils literal"><span class="pre">raw_input</span></tt>.</p>
</div>
<div class="section" id="to-2-21-2002">
<h2><a class="toc-backref" href="#id28" name="to-2-21-2002">0.7.1 (12/12/2001 to 2/21/2002)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id28" id="to-2-21-2002" name="to-2-21-2002">0.7.1 (12/12/2001 to 2/21/2002)</a></h2>
<p>Fixed <tt class="docutils literal"><span class="pre">OnChar()</span></tt> issues effecting European keyboards, as reported by
Jean-Michel Fauth.</p>
<p>Fixed <tt class="docutils literal"><span class="pre">introspect.py</span></tt> issue with xmlrpc objects reported by Kevin
@@ -536,8 +818,8 @@ to insert from history - Shift+Up and Shift+Down.</p>
<p>Better call tips on objects with <tt class="docutils literal"><span class="pre">__call__</span></tt> methods.</p>
<p>Improved call tip positioning calculation.</p>
</div>
<div class="section" id="to-12-11-2001">
<h2><a class="toc-backref" href="#id29" name="to-12-11-2001">0.7 (10/15/2001 to 12/11/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id29" id="to-12-11-2001" name="to-12-11-2001">0.7 (10/15/2001 to 12/11/2001)</a></h2>
<p>Changed how command history retrieval functions work. Added Alt-P,
Alt-N as keybindings for Retrieve-Previous, Retrieve-Next.</p>
<p>Added full support for multi-line commands, similar to IDLE.</p>
@@ -560,8 +842,8 @@ package/module name conflicts that kept you from doing <tt class="docutils liter
<p>Removed the <tt class="docutils literal"><span class="pre">__date__</span></tt> property from all modules.</p>
<p>Fixed bug in <tt class="docutils literal"><span class="pre">introspect.getCallTip()</span></tt>, reported by Kevin Altis.</p>
</div>
<div class="section" id="to-10-12-2001">
<h2><a class="toc-backref" href="#id30" name="to-10-12-2001">0.6.1 (9/19/2001 to 10/12/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id30" id="to-10-12-2001" name="to-10-12-2001">0.6.1 (9/19/2001 to 10/12/2001)</a></h2>
<p>Changed <tt class="docutils literal"><span class="pre">Shell.run()</span></tt> to always position to the end of existing
text, as suggested by Raul Cota.</p>
<p>Changed <tt class="docutils literal"><span class="pre">introspect.getAllAttributeNames()</span></tt> to break circular
@@ -578,8 +860,8 @@ platform where the font was 2 points larger than what was specified.</p>
ZODB objects that are asleep - in a &quot;ghost&quot; state. Otherwise it
returns incomplete info.</p>
</div>
<div class="section" id="to-9-12-2001">
<h2><a class="toc-backref" href="#id31" name="to-9-12-2001">0.6 (8/21/2001 to 9/12/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id31" id="to-9-12-2001" name="to-9-12-2001">0.6 (8/21/2001 to 9/12/2001)</a></h2>
<p>Added <tt class="docutils literal"><span class="pre">PyFilling.py</span></tt> and <tt class="docutils literal"><span class="pre">filling.py</span></tt>.</p>
<p><tt class="docutils literal"><span class="pre">PyShell.py</span></tt> and <tt class="docutils literal"><span class="pre">PyFilling.py</span></tt> can now be run standalone, as well
as <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt>.</p>
@@ -599,8 +881,8 @@ sys.path.insert(0, os.curdir)
</pre>
<p>Added support for distutils installations.</p>
</div>
<div class="section" id="to-8-20-2001">
<h2><a class="toc-backref" href="#id32" name="to-8-20-2001">0.5.4 (8/17/2001 to 8/20/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id32" id="to-8-20-2001" name="to-8-20-2001">0.5.4 (8/17/2001 to 8/20/2001)</a></h2>
<p>Changed default font size under Linux to:</p>
<pre class="literal-block">
'size' : 12,
@@ -617,15 +899,15 @@ demo.</p>
<p>Split <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt> into <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt> and <tt class="docutils literal"><span class="pre">PyShell.py</span></tt> in
anticipation of <tt class="docutils literal"><span class="pre">PyFilling.py</span></tt>.</p>
</div>
<div class="section" id="id2">
<h2><a class="toc-backref" href="#id33" name="id2">0.5.3 (8/16/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id33" id="id2" name="id2">0.5.3 (8/16/2001)</a></h2>
<p>Added patch to <tt class="docutils literal"><span class="pre">PyCrust.py</span></tt> to fix wxPython bug:</p>
<pre class="literal-block">
wxID_SELECTALL = NewId() # This *should* be defined by wxPython.
</pre>
</div>
<div class="section" id="to-8-15-2001">
<h2><a class="toc-backref" href="#id34" name="to-8-15-2001">0.5.2 (8/14/2001 to 8/15/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id34" id="to-8-15-2001" name="to-8-15-2001">0.5.2 (8/14/2001 to 8/15/2001)</a></h2>
<p>Shortened module names by dropping &quot;PyCrust&quot; as a prefix.</p>
<p>Changed <tt class="docutils literal"><span class="pre">version</span></tt> to <tt class="docutils literal"><span class="pre">VERSION</span></tt> in <tt class="docutils literal"><span class="pre">version</span></tt> module.</p>
<p>Added Options menu to PyCrust application.</p>
@@ -635,8 +917,8 @@ There just wasn't enough non-gui code to justify the separation.
Plus, Shell will be much easier for gui toolkits/designers to deal
with now.</p>
</div>
<div class="section" id="to-8-14-2001">
<h2><a class="toc-backref" href="#id35" name="to-8-14-2001">0.5.1 (8/10/2001 to 8/14/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id35" id="to-8-14-2001" name="to-8-14-2001">0.5.1 (8/10/2001 to 8/14/2001)</a></h2>
<p>Added <tt class="docutils literal"><span class="pre">introspect</span></tt> module.</p>
<p>Moved some functionality from <tt class="docutils literal"><span class="pre">PyCrustInterp</span></tt> to <tt class="docutils literal"><span class="pre">introspect</span></tt>.</p>
<p>Changed <tt class="docutils literal"><span class="pre">introspect.getRoot()</span></tt> to no longer remove whitespace from
@@ -687,32 +969,32 @@ exclude one or the other or both with:</p>
&gt;&gt;&gt; shell.editor.autoCompleteExcludeDouble = 1
</pre>
</div>
<div class="section" id="id3">
<h2><a class="toc-backref" href="#id36" name="id3">0.5 (8/8/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id36" id="id3" name="id3">0.5 (8/8/2001)</a></h2>
<p>Mostly just a final version change before creating a release.</p>
</div>
<div class="section" id="to-8-7-2001">
<h2><a class="toc-backref" href="#id37" name="to-8-7-2001">0.4 (8/4/2001 to 8/7/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id37" id="to-8-7-2001" name="to-8-7-2001">0.4 (8/4/2001 to 8/7/2001)</a></h2>
<p>Changed version/revision handling.</p>
<p>Fixed bugs.</p>
</div>
<div class="section" id="to-8-3-2001">
<h2><a class="toc-backref" href="#id38" name="to-8-3-2001">0.3 (8/2/2001 to 8/3/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id38" id="to-8-3-2001" name="to-8-3-2001">0.3 (8/2/2001 to 8/3/2001)</a></h2>
<p>Removed lots of cruft.</p>
<p>Added lots of docstrings.</p>
<p>Imported to CVS repository at SourceForge.</p>
<p>Added call tips.</p>
</div>
<div class="section" id="to-8-2-2001">
<h2><a class="toc-backref" href="#id39" name="to-8-2-2001">0.2 (7/30/2001 to 8/2/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id39" id="to-8-2-2001" name="to-8-2-2001">0.2 (7/30/2001 to 8/2/2001)</a></h2>
<p>Renamed several files.</p>
<p>Added command autocompletion.</p>
<p>Added menus to PyCrust.py: File, Edit and Help.</p>
<p>Added sample applications: <tt class="docutils literal"><span class="pre">PyCrustAlaCarte.py</span></tt>,
<tt class="docutils literal"><span class="pre">PyCrustAlaMode.py</span></tt>, and <tt class="docutils literal"><span class="pre">PyCrustMinimus.py</span></tt>.</p>
</div>
<div class="section" id="to-7-19-2001">
<h2><a class="toc-backref" href="#id40" name="to-7-19-2001">0.1 (7/1/2001 to 7/19/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id40" id="to-7-19-2001" name="to-7-19-2001">0.1 (7/1/2001 to 7/19/2001)</a></h2>
<p>Added basic syntax coloring much like Boa.</p>
<p>Added read-only logging much like IDLE.</p>
<p>Can retrieve a previous command by putting the cursor back on that
@@ -724,8 +1006,8 @@ response.</p>
<p>Home key honors the prompt.</p>
<p>Created SourceForge account, but nothing was posted.</p>
</div>
<div class="section" id="in-the-beginning-there-was-pie-7-1-2001">
<h2><a class="toc-backref" href="#id41" name="in-the-beginning-there-was-pie-7-1-2001">In the beginning, there was pie... (7/1/2001)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id41" id="in-the-beginning-there-was-pie-7-1-2001" name="in-the-beginning-there-was-pie-7-1-2001">In the beginning, there was pie... (7/1/2001)</a></h2>
<p>Blame it all on IDLE, Boa and PythonWin. I was using all three, got
frustrated with their dissimilarities, and began to let everyone know
how I felt. At the same time, Scintilla looked like an interesting

View File

@@ -3,14 +3,296 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title></title>
<link rel="stylesheet" href="default.css" type="text/css" />
<style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<div class="section" id="wxpython-readme">
<h1><a name="wxpython-readme">wxPython README</a></h1>
<div class="section">
<h1><a id="wxpython-readme" name="wxpython-readme">wxPython README</a></h1>
<p>Welcome to the wonderful world of wxPython!</p>
<p>So where do you go from here? The best thing to do is to run the demo
and use its source code to help you learn how to use wxPython. Most
@@ -38,8 +320,8 @@ easily be able to &quot;mentally translate&quot; from the C++ shown into Python.
for a little help on this process.) Not all classes documented are
available in Python, but most of the GUI related classes are.</p>
</div>
<div class="section" id="other-info">
<h1><a name="other-info">Other Info</a></h1>
<div class="section">
<h1><a id="other-info" name="other-info">Other Info</a></h1>
<p>Please also see the following files:</p>
<blockquote>
<dl class="docutils">

View File

@@ -3,13 +3,295 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>The wxPython wx Package</title>
<meta name="author" content="Patrick K. O'Brien" />
<meta name="author" content="Robin Dunn" />
<meta name="organization" content="Orbtech" />
<meta name="date" content="2004-03-26" />
<link rel="stylesheet" href="default.css" type="text/css" />
<style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="the-wxpython-wx-package">
@@ -33,8 +315,8 @@
<td>1.4</td></tr>
</tbody>
</table>
<div class="contents topic" id="contents">
<p class="topic-title first"><a name="contents">Contents</a></p>
<div class="contents topic">
<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="simple">
<li><a class="reference" href="#introduction" id="id2" name="id2">Introduction</a></li>
<li><a class="reference" href="#why-change-anything" id="id3" name="id3">Why change anything?</a></li>
@@ -46,8 +328,8 @@
<li><a class="reference" href="#where-can-i-find-example-programs-using-the-new-wx-syntax" id="id9" name="id9">Where can I find example programs using the new wx syntax?</a></li>
</ul>
</div>
<div class="section" id="introduction">
<h1><a class="toc-backref" href="#id2" name="introduction">Introduction</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id2" id="introduction" name="introduction">Introduction</a></h1>
<p>In the begining there was Python, and Python had modules, and Python
was good. But after a time Guido looked on Python and saw that Python
needed organizational assistance, and so Guido took code from Python's
@@ -69,8 +351,8 @@ have concerning the new wx package. Please also take a look at the
<a class="reference" href="MigrationGuide.html">2.5 Migration Guide</a> to see notes about other big differences in
this release.</p>
</div>
<div class="section" id="why-change-anything">
<h1><a class="toc-backref" href="#id3" name="why-change-anything">Why change anything?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id3" id="why-change-anything" name="why-change-anything">Why change anything?</a></h1>
<p>This change is being made for a couple of reasons. The first reason
is to discourage the use of <tt class="docutils literal"><span class="pre">import</span> <span class="pre">*</span></tt>, which is a dangerous
technique that can create name conflicts and bloated namespaces.</p>
@@ -93,8 +375,8 @@ class Frame(wx.Frame)
the same thing (implement a new wx namespace and drop the &quot;wx&quot; prefix)
and we want wxPython to lead the way.</p>
</div>
<div class="section" id="what-does-the-new-wx-package-do">
<h1><a class="toc-backref" href="#id4" name="what-does-the-new-wx-package-do">What does the new wx package do?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id4" id="what-does-the-new-wx-package-do" name="what-does-the-new-wx-package-do">What does the new wx package do?</a></h1>
<p>As mentioned in the Introduction, wxPython 2.4.1 introduced a way of
getting to this new syntax as quickly as possible. It would import
the old names (like &quot;wxFrame&quot;) from the old package and then create new
@@ -108,8 +390,8 @@ populated with modules that simply import the new names and then
complicated, but it is mostly automated and so it doesn't cause
problems in most cases.</p>
</div>
<div class="section" id="will-any-of-this-effect-my-existing-code">
<h1><a class="toc-backref" href="#id5" name="will-any-of-this-effect-my-existing-code">Will any of this effect my existing code?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id5" id="will-any-of-this-effect-my-existing-code" name="will-any-of-this-effect-my-existing-code">Will any of this effect my existing code?</a></h1>
<p>No. Your existing code will continue to work and be supported for
some time. It will be up to you to decide when to switch to the new
syntax. But all new documentation and code examples will use the new
@@ -123,24 +405,24 @@ old code is depending on some of the implemtation details, or if you
are using other things that have changed in the API. See the
<a class="reference" href="MigrationGuide.html">Migration Guide</a> for more details.</p>
</div>
<div class="section" id="what-about-all-the-other-modules-like-grid-html-and-stc">
<h1><a class="toc-backref" href="#id6" name="what-about-all-the-other-modules-like-grid-html-and-stc">What about all the other modules, like grid, html, and stc?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id6" id="what-about-all-the-other-modules-like-grid-html-and-stc" name="what-about-all-the-other-modules-like-grid-html-and-stc">What about all the other modules, like grid, html, and stc?</a></h1>
<p>There's more to the old wxPython than just the wxPython.wx module.
And we've got those extra modules covered as well. Each of those
modules (as well as the lib subpackage) has been moved to the new wx
package and reverse-renamers have been placed in the wxPython package
as needed.</p>
</div>
<div class="section" id="how-do-i-use-this-new-wx-package">
<h1><a class="toc-backref" href="#id7" name="how-do-i-use-this-new-wx-package">How do I use this new wx package?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id7" id="how-do-i-use-this-new-wx-package" name="how-do-i-use-this-new-wx-package">How do I use this new wx package?</a></h1>
<p>The wx package is automatically created when you install wxPython
version 2.4.1 or higher. So all you have to do is:</p>
<pre class="literal-block">
import wx
</pre>
</div>
<div class="section" id="what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package">
<h1><a class="toc-backref" href="#id8" name="what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package">What are the issues with converting old code to use the new wx package?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id8" id="what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package" name="what-are-the-issues-with-converting-old-code-to-use-the-new-wx-package">What are the issues with converting old code to use the new wx package?</a></h1>
<p>Obviously, you need to change your import statements from:</p>
<pre class="literal-block">
from wxPython import wx
@@ -161,8 +443,8 @@ class MyFrame(wx.Frame):
<p>In most cases, existing code can be modified with a simple search and
replace.</p>
</div>
<div class="section" id="where-can-i-find-example-programs-using-the-new-wx-syntax">
<h1><a class="toc-backref" href="#id9" name="where-can-i-find-example-programs-using-the-new-wx-syntax">Where can I find example programs using the new wx syntax?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id9" id="where-can-i-find-example-programs-using-the-new-wx-syntax" name="where-can-i-find-example-programs-using-the-new-wx-syntax">Where can I find example programs using the new wx syntax?</a></h1>
<p>The wxPython demo application and most of the sample apps have been
converted to use the new <tt class="docutils literal"><span class="pre">import</span> <span class="pre">wx</span></tt> style of programming with
wxPython, so there are lots of examples to look at and to play with.

View File

@@ -3,12 +3,294 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="Docutils 0.3.7: http://docutils.sourceforge.net/" />
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>The wxPython Manual</title>
<meta name="author" content="Patrick K. O'Brien" />
<meta name="organization" content="Orbtech" />
<meta name="date" content="2004-03-26" />
<link rel="stylesheet" href="default.css" type="text/css" />
<style type="text/css">
/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date$
:Revision: $Revision$
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin-left: 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left {
clear: left }
img.align-right {
clear: right }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font-family: serif ;
font-size: 100% }
pre.literal-block, pre.doctest-block {
margin-left: 2em ;
margin-right: 2em ;
background-color: #eeeeee }
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
tt.docutils {
background-color: #eeeeee }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="the-wxpython-manual">
@@ -32,8 +314,8 @@
</tr>
</tbody>
</table>
<div class="contents topic" id="contents">
<p class="topic-title first"><a name="contents">Contents</a></p>
<div class="contents topic">
<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
<ul class="simple">
<li><a class="reference" href="#introduction" id="id1" name="id1">Introduction</a></li>
<li><a class="reference" href="#what-is-wxpython" id="id2" name="id2">What is wxPython?</a></li>
@@ -93,8 +375,8 @@
<li><a class="reference" href="#license" id="id46" name="id46">License</a></li>
</ul>
</div>
<div class="section" id="introduction">
<h1><a class="toc-backref" href="#id1" name="introduction">Introduction</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id1" id="introduction" name="introduction">Introduction</a></h1>
<p>This is a guide to the wxPython GUI toolkit, written <strong>by</strong> a Python
programmer <strong>for</strong> his fellow Python programmers. It began as a
simple translation of the wxWidgets documentation (which is written
@@ -108,8 +390,8 @@ beans, dark chocolate, and large denomination currency. Better yet,
buy huge quantities of my wxPython book (written with Robin Dunn) and
send one to each of your friends, relatives, and coworkers.</p>
</div>
<div class="section" id="what-is-wxpython">
<h1><a class="toc-backref" href="#id2" name="what-is-wxpython">What is wxPython?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id2" id="what-is-wxpython" name="what-is-wxpython">What is wxPython?</a></h1>
<p>wxPython is a GUI toolkit for the Python programming language. It
allows Python programmers to create programs with a robust, highly
functional graphical user interface, simply and easily. It is
@@ -126,19 +408,19 @@ or unix-like systems, and Macintosh OS X.</p>
<p>Since the language is Python, wxPython programs are simple, easy to
write and easy to understand.</p>
</div>
<div class="section" id="wxpython-requirements">
<h1><a class="toc-backref" href="#id3" name="wxpython-requirements">wxPython requirements</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id3" id="wxpython-requirements" name="wxpython-requirements">wxPython requirements</a></h1>
<p>To make use of wxPython, you currently need one of the following
setups.</p>
<div class="section" id="ms-windows">
<h2><a class="toc-backref" href="#id4" name="ms-windows">MS-Windows</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id4" id="ms-windows" name="ms-windows">MS-Windows</a></h2>
<ul class="simple">
<li>A 486 or higher PC running MS Windows.</li>
<li>At least ?? MB of disk space.</li>
</ul>
</div>
<div class="section" id="linux-or-unix">
<h2><a class="toc-backref" href="#id5" name="linux-or-unix">Linux or Unix</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id5" id="linux-or-unix" name="linux-or-unix">Linux or Unix</a></h2>
<ul class="simple">
<li>Almost any C++ compiler, including GNU C++ (EGCS 1.1.1 or above).</li>
<li>Almost any Unix workstation, and one of: GTK+ 1.2, GTK+ 2.0, Motif
@@ -146,16 +428,16 @@ setups.</p>
<li>At least ?? MB of disk space.</li>
</ul>
</div>
<div class="section" id="mac-os-x">
<h2><a class="toc-backref" href="#id6" name="mac-os-x">Mac OS X</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id6" id="mac-os-x" name="mac-os-x">Mac OS X</a></h2>
<ul class="simple">
<li>A PowerPC Mac running Mac OS X 10.x.</li>
<li>At least ?? MB of disk space.</li>
</ul>
</div>
</div>
<div class="section" id="what-is-wxwidgets">
<h1><a class="toc-backref" href="#id7" name="what-is-wxwidgets">What is wxWidgets?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id7" id="what-is-wxwidgets" name="what-is-wxwidgets">What is wxWidgets?</a></h1>
<p>wxWidgets is a C++ framework providing GUI (Graphical User Interface)
and other facilities on more than one platform. Version 2 currently
supports all desktop versions of MS Windows, Unix with GTK+, Unix with
@@ -169,8 +451,8 @@ Roebling, Vadim Zeitlin, Vaclav Slavik and many others.</p>
platforms related to Microsoft Windows, including 16-bit and 32-bit
variants, unless otherwise stated. All trademarks are acknowledged.</p>
</div>
<div class="section" id="why-another-cross-platform-development-tool">
<h1><a class="toc-backref" href="#id8" name="why-another-cross-platform-development-tool">Why another cross-platform development tool?</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id8" id="why-another-cross-platform-development-tool" name="why-another-cross-platform-development-tool">Why another cross-platform development tool?</a></h1>
<p>wxWidgets was developed to provide a cheap and flexible way to
maximize investment in GUI application development. While a number of
commercial class libraries already existed for cross-platform
@@ -244,8 +526,8 @@ the clipboard.</li>
PNM, PCX).</li>
</ul>
</div>
<div class="section" id="wxpython-overview">
<h1><a class="toc-backref" href="#id9" name="wxpython-overview">wxPython Overview</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id9" id="wxpython-overview" name="wxpython-overview">wxPython Overview</a></h1>
<p>To set a wxPython application going, you will need to derive an App
class and override App.OnInit.</p>
<p>An application must have a top-level Frame or Dialog window. Each
@@ -291,14 +573,14 @@ PathList. There's a miscellany of operating system and other
functions.</p>
<p>See also Classes by Category for a list of classes.</p>
</div>
<div class="section" id="utilities-and-libraries-supplied-with-wxpython">
<h1><a class="toc-backref" href="#id10" name="utilities-and-libraries-supplied-with-wxpython">Utilities and libraries supplied with wxPython</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id10" id="utilities-and-libraries-supplied-with-wxpython" name="utilities-and-libraries-supplied-with-wxpython">Utilities and libraries supplied with wxPython</a></h1>
<p>In addition to the core wxWidgets library, a number of further
libraries and utilities are supplied with each distribution.</p>
<p>[Need to list these.]</p>
</div>
<div class="section" id="creating-and-deleting-wxpython-objects">
<h1><a class="toc-backref" href="#id11" name="creating-and-deleting-wxpython-objects">Creating and deleting wxPython objects</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id11" id="creating-and-deleting-wxpython-objects" name="creating-and-deleting-wxpython-objects">Creating and deleting wxPython objects</a></h1>
<p>[This section needs to be reviewed.]</p>
<!-- In general, classes derived from wxWindow must dynamically
allocated with new and deleted with delete. If you delete a window,
@@ -323,11 +605,11 @@ wxDC::SelectObject(wxNullBitmap) before deleting a drawing object
that may be in use. Code that doesn't do this will probably work
fine on some platforms, and then fail under Windows. -->
</div>
<div class="section" id="app-overview">
<h1><a class="toc-backref" href="#id12" name="app-overview">App overview</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id12" id="app-overview" name="app-overview">App overview</a></h1>
<p>Classes: wx.App</p>
<div class="section" id="application-initialization">
<h2><a class="toc-backref" href="#id13" name="application-initialization">Application initialization</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id13" id="application-initialization" name="application-initialization">Application initialization</a></h2>
<p>The OnInit method defined for a class derived from wx.App will usually
create a top window as a bare minimum.</p>
<p>OnInit must return a boolean value to indicate whether processing
@@ -365,8 +647,8 @@ if __name__ == '__main__':
main()
</pre>
</div>
<div class="section" id="application-shutdown">
<h2><a class="toc-backref" href="#id14" name="application-shutdown">Application shutdown</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id14" id="application-shutdown" name="application-shutdown">Application shutdown</a></h2>
<p>The application normally shuts down when the last of its top level
windows is closed. This is normally the expected behaviour and means
that it is enough to call Close() in response to the &quot;Exit&quot; menu
@@ -385,8 +667,8 @@ created by the time OnExit finishes.</p>
<p>[Need examples of objects needing cleanup to keep app from crashing.]</p>
</div>
</div>
<div class="section" id="sizer-overview">
<h1><a class="toc-backref" href="#id15" name="sizer-overview">Sizer overview</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id15" id="sizer-overview" name="sizer-overview">Sizer overview</a></h1>
<p>Classes: wx.Sizer, wx.GridSizer, wx.FlexGridSizer, wx.BoxSizer,
wx.StaticBoxSizer, wx.NotebookSizer, wx.CreateButtonSizer</p>
<table border="1" class="docutils">
@@ -425,8 +707,8 @@ individual controls. Editors such as wxDesigner, wxrcedit, XRCed and
wxWorkshop create dialogs based exclusively on sizers, practically
forcing the user to create platform independent layouts without
compromises.</p>
<div class="section" id="the-idea-behind-sizers">
<h2><a class="toc-backref" href="#id16" name="the-idea-behind-sizers">The idea behind sizers</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id16" id="the-idea-behind-sizers" name="the-idea-behind-sizers">The idea behind sizers</a></h2>
<p>The layout algorithm used by sizers in wxPython is closely related to
layout systems in other GUI toolkits, such as Java's AWT, the GTK
toolkit or the Qt toolkit. It is based upon the idea of individual
@@ -453,15 +735,15 @@ in a dialog or it fulfils a special task such as wrapping a static box
around a dialog item (or another sizer). These sizers will be
discussed one by one in the text below.</p>
</div>
<div class="section" id="common-features">
<h2><a class="toc-backref" href="#id17" name="common-features">Common features</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id17" id="common-features" name="common-features">Common features</a></h2>
<p>All sizers are containers, that is, they are used to lay out one
dialog item (or several dialog items), which they contain. Such items
are sometimes referred to as the children of the sizer. Independent
of how the individual sizers lay out their children, all children have
certain features in common:</p>
<div class="section" id="a-minimal-size">
<h3><a class="toc-backref" href="#id18" name="a-minimal-size">A minimal size</a></h3>
<div class="section">
<h3><a class="toc-backref" href="#id18" id="a-minimal-size" name="a-minimal-size">A minimal size</a></h3>
<p>This minimal size is usually identical to the initial size of the
controls and may either be set explicitly in the size field of the
control constructor or may be calculated by wxPython, typically by
@@ -472,8 +754,8 @@ thus require an explicit size. Some controls can calculate their
height, but not their width (e.g. a single line text control):</p>
<p>[Need graphics]</p>
</div>
<div class="section" id="a-border">
<h3><a class="toc-backref" href="#id19" name="a-border">A border</a></h3>
<div class="section">
<h3><a class="toc-backref" href="#id19" id="a-border" name="a-border">A border</a></h3>
<p>The border is just empty space and is used to separate dialog items in
a dialog. This border can either be all around, or at any combination
of sides such as only above and below the control. The thickness of
@@ -482,8 +764,8 @@ samples show dialogs with only one dialog item (a button) and a border
of 0, 5, and 10 pixels around the button:</p>
<p>[Need graphics]</p>
</div>
<div class="section" id="an-alignment">
<h3><a class="toc-backref" href="#id20" name="an-alignment">An alignment</a></h3>
<div class="section">
<h3><a class="toc-backref" href="#id20" id="an-alignment" name="an-alignment">An alignment</a></h3>
<p>Often, a dialog item is given more space than its minimal size plus
its border. Depending on what flags are used for the respective dialog
item, the dialog item can be made to fill out the available space
@@ -494,8 +776,8 @@ three buttons in a horizontal box sizer; one button is centred, one is
aligned at the top, one is aligned at the bottom:</p>
<p>[Need graphics]</p>
</div>
<div class="section" id="a-stretch-factor">
<h3><a class="toc-backref" href="#id21" name="a-stretch-factor">A stretch factor</a></h3>
<div class="section">
<h3><a class="toc-backref" href="#id21" id="a-stretch-factor" name="a-stretch-factor">A stretch factor</a></h3>
<p>If a sizer contains more than one child and it is offered more space
than its children and their borders need, the question arises how to
distribute the surplus space among the children. For this purpose, a
@@ -513,8 +795,8 @@ have a stretch factor of zero and keep their initial width:</p>
<p>Within wxDesigner, this stretch factor gets set from the Option menu.</p>
</div>
</div>
<div class="section" id="boxsizer">
<h2><a class="toc-backref" href="#id22" name="boxsizer">BoxSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id22" id="boxsizer" name="boxsizer">BoxSizer</a></h2>
<p>BoxSizer can lay out its children either vertically or horizontally,
depending on what flag is being used in its constructor. When using a
vertical sizer, each child can be centered, aligned to the right or
@@ -527,14 +809,14 @@ horizontally. The following sample shows the same dialog as in the
last sample, only the box sizer is a vertical box sizer now:</p>
<p>[Need graphics]</p>
</div>
<div class="section" id="staticboxsizer">
<h2><a class="toc-backref" href="#id23" name="staticboxsizer">StaticBoxSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id23" id="staticboxsizer" name="staticboxsizer">StaticBoxSizer</a></h2>
<p>StaticBoxSixer is the same as a BoxSizer, but surrounded by a static
box. Here is a sample:</p>
<p>[Need graphics]</p>
</div>
<div class="section" id="gridsizer">
<h2><a class="toc-backref" href="#id24" name="gridsizer">GridSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id24" id="gridsizer" name="gridsizer">GridSizer</a></h2>
<p>GridSizer is a two-dimensional sizer. All children are given the same
size, which is the minimal size required by the biggest child, in this
case the text control in the left bottom border. Either the number of
@@ -542,8 +824,8 @@ columns or the number or rows is fixed and the grid sizer will grow in
the respectively other orientation if new children are added:</p>
<p>[Need graphics]</p>
</div>
<div class="section" id="flexgridsizer">
<h2><a class="toc-backref" href="#id25" name="flexgridsizer">FlexGridSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id25" id="flexgridsizer" name="flexgridsizer">FlexGridSizer</a></h2>
<p>Another two-dimensional sizer derived from GridSizer. The width of
each column and the height of each row are calculated individually
according the minimal requirements from the respectively biggest
@@ -553,16 +835,16 @@ it requested. The following sample shows the same dialog as the one
above, but using a flex grid sizer:</p>
<p>[Need graphics]</p>
</div>
<div class="section" id="notebooksizer">
<h2><a class="toc-backref" href="#id26" name="notebooksizer">NotebookSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id26" id="notebooksizer" name="notebooksizer">NotebookSizer</a></h2>
<p>NotebookSizer can be used with notebooks. It calculates the size of
each notebook page and sets the size of the notebook to the size of
the biggest page plus some extra space required for the notebook tabs
and decorations.</p>
<p>[Need graphics]</p>
</div>
<div class="section" id="programming-with-boxsizer">
<h2><a class="toc-backref" href="#id27" name="programming-with-boxsizer">Programming with BoxSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id27" id="programming-with-boxsizer" name="programming-with-boxsizer">Programming with BoxSizer</a></h2>
<p>The basic idea behind a BoxSizer is that windows will most often be
laid out in rather simple basic geometry, typically in a row or a
column or several hierarchies of either.</p>
@@ -615,16 +897,16 @@ that the entire behaviour of a sizer and its children can be
controlled by the three parameters of the Add() method.</p>
<p>[Show code and graphic here.]</p>
</div>
<div class="section" id="programming-with-gridsizer">
<h2><a class="toc-backref" href="#id28" name="programming-with-gridsizer">Programming with GridSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id28" id="programming-with-gridsizer" name="programming-with-gridsizer">Programming with GridSizer</a></h2>
<p>GridSizer is a sizer which lays out its children in a two-dimensional
table with all table fields having the same size, i.e. the width of
each field is the width of the widest child, the height of each field
is the height of the tallest child.</p>
<p>[Show code and graphic here.]</p>
</div>
<div class="section" id="programming-with-flexgridsizer">
<h2><a class="toc-backref" href="#id29" name="programming-with-flexgridsizer">Programming with FlexGridSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id29" id="programming-with-flexgridsizer" name="programming-with-flexgridsizer">Programming with FlexGridSizer</a></h2>
<p>FlexGridSizer is a sizer which lays out its children in a
two-dimensional table with all table fields in one row having the same
height and all fields in one column having the same width, but all
@@ -632,8 +914,8 @@ rows or all columns are not necessarily the same height or width as in
the GridSizer.</p>
<p>[Show code and graphic here.]</p>
</div>
<div class="section" id="programming-with-notebooksizer">
<h2><a class="toc-backref" href="#id30" name="programming-with-notebooksizer">Programming with NotebookSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id30" id="programming-with-notebooksizer" name="programming-with-notebooksizer">Programming with NotebookSizer</a></h2>
<p>NotebookSizer is a specialized sizer to make sizers work in connection
with using notebooks. This sizer is different from any other sizer as
you must not add any children to it - instead, it queries the notebook
@@ -648,15 +930,15 @@ one example showing how to add a notebook page that the notebook sizer
is aware of:</p>
<p>[Show code and graphic here.]</p>
</div>
<div class="section" id="programming-with-staticboxsizer">
<h2><a class="toc-backref" href="#id31" name="programming-with-staticboxsizer">Programming with StaticBoxSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id31" id="programming-with-staticboxsizer" name="programming-with-staticboxsizer">Programming with StaticBoxSizer</a></h2>
<p>StaticBoxSizer is a sizer derived from BoxSizer but adds a static box
around the sizer. Note that this static box has to be created
separately.</p>
<p>[Show code and graphic here.]</p>
</div>
<div class="section" id="dialog-createbuttonsizer">
<h2><a class="toc-backref" href="#id32" name="dialog-createbuttonsizer">Dialog.CreateButtonSizer</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id32" id="dialog-createbuttonsizer" name="dialog-createbuttonsizer">Dialog.CreateButtonSizer</a></h2>
<p>As a convenience, the Dialog class has a CreateButtonSizer(flags)
method that can be used to create a standard button sizer in which
standard buttons are displayed. The following flags can be passed to
@@ -705,8 +987,8 @@ wx.OK button will be default</td>
</table>
</div>
</div>
<div class="section" id="date-and-time-classes-overview">
<h1><a class="toc-backref" href="#id33" name="date-and-time-classes-overview">Date and time classes overview</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id33" id="date-and-time-classes-overview" name="date-and-time-classes-overview">Date and time classes overview</a></h1>
<p>wxPython provides a set of powerful classes to work with dates and
times. Some of the supported features of the DateTime class are:</p>
<table border="1" class="docutils">
@@ -737,8 +1019,8 @@ with them is fast</td>
</tr>
</tbody>
</table>
<div class="section" id="all-date-time-classes-at-a-glance">
<h2><a class="toc-backref" href="#id34" name="all-date-time-classes-at-a-glance">All date/time classes at a glance</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id34" id="all-date-time-classes-at-a-glance" name="all-date-time-classes-at-a-glance">All date/time classes at a glance</a></h2>
<p>There are 3 main classes: except DateTime itself which represents an
absolute moment in time, there are also two classes - TimeSpan and
DateSpan which represent the intervals of time.</p>
@@ -748,8 +1030,8 @@ date is a holiday or not and DateTimeWorkDays which is a derivation of
this class for which (only) Saturdays and Sundays are the holidays.
See more about these classes in the discussion of the holidays.</p>
</div>
<div class="section" id="datetime-characteristics">
<h2><a class="toc-backref" href="#id35" name="datetime-characteristics">DateTime characteristics</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id35" id="datetime-characteristics" name="datetime-characteristics">DateTime characteristics</a></h2>
<p>DateTime stores the time as a signed number of milliseconds since the
Epoch which is fixed, by convention, to Jan 1, 1970 - however this is
not visible to the class users (in particular, dates prior to the
@@ -772,8 +1054,8 @@ country, and even region, dependent). Future versions will probably
have Julian calendar support as well and support for other calendars
(Maya, Hebrew, Chinese...) is not ruled out.</p>
</div>
<div class="section" id="difference-between-datespan-and-timespan">
<h2><a class="toc-backref" href="#id36" name="difference-between-datespan-and-timespan">Difference between DateSpan and TimeSpan</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id36" id="difference-between-datespan-and-timespan" name="difference-between-datespan-and-timespan">Difference between DateSpan and TimeSpan</a></h2>
<p>While there is only one logical way to represent an absolute moment in
the time (and hence only one DateTime class), there are at least two
methods to describe a time interval.</p>
@@ -801,8 +1083,8 @@ in the program, you should probably use TimeSpan instead of DateSpan
in situations when you do need to understand what 'in a month' means
(of course, it is just DateTime.Now() + DateSpan.Month()).</p>
</div>
<div class="section" id="date-arithmetics">
<h2><a class="toc-backref" href="#id37" name="date-arithmetics">Date arithmetics</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id37" id="date-arithmetics" name="date-arithmetics">Date arithmetics</a></h2>
<p>Many different operations may be performed with the dates, however not
all of them make sense. For example, multiplying a date by a number
is an invalid operation, even though multiplying either of the time
@@ -838,8 +1120,8 @@ opposite time direction.</td>
</tbody>
</table>
</div>
<div class="section" id="time-zone-considerations">
<h2><a class="toc-backref" href="#id38" name="time-zone-considerations">Time zone considerations</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id38" id="time-zone-considerations" name="time-zone-considerations">Time zone considerations</a></h2>
<p>Although the time is always stored internally in GMT, you will usually
work in the local time zone. Because of this, all DateTime
constructors and setters which take the broken down date assume that
@@ -877,8 +1159,8 @@ job. I.e. you would just write</p>
printf(&quot;The time is %s in local time zone&quot;, dt.FormatTime().c_str());
printf(&quot;The time is %s in GMT&quot;, dt.FormatTime(wxDateTime::GMT).c_str());</p>
</div>
<div class="section" id="daylight-saving-time-dst">
<h2><a class="toc-backref" href="#id39" name="daylight-saving-time-dst">Daylight saving time (DST)</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id39" id="daylight-saving-time-dst" name="daylight-saving-time-dst">Daylight saving time (DST)</a></h2>
<p>DST (a.k.a. 'summer time') handling is always a delicate task which is
better left to the operating system which is supposed to be configured
by the administrator to behave correctly. Unfortunately, when doing
@@ -894,17 +1176,17 @@ the future.</p>
<p>The time zone handling methods use these functions too, so they are
subject to the same limitations.</p>
</div>
<div class="section" id="datetime-and-holidays">
<h2><a class="toc-backref" href="#id40" name="datetime-and-holidays">DateTime and Holidays</a></h2>
<div class="section">
<h2><a class="toc-backref" href="#id40" id="datetime-and-holidays" name="datetime-and-holidays">DateTime and Holidays</a></h2>
<p>[TODO]</p>
</div>
</div>
<div class="section" id="classes-by-category">
<h1><a class="toc-backref" href="#id41" name="classes-by-category">Classes by category</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id41" id="classes-by-category" name="classes-by-category">Classes by category</a></h1>
<p>Not done yet.</p>
</div>
<div class="section" id="id-constants">
<h1><a class="toc-backref" href="#id42" name="id-constants">ID constants</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id42" id="id-constants" name="id-constants">ID constants</a></h1>
<p>wxPython provides the following predefined ID constants:</p>
<p>ID_ABORT
ID_ABOUT
@@ -964,8 +1246,8 @@ ID_UNDO
ID_YES
ID_YESTOALL</p>
</div>
<div class="section" id="source-document">
<h1><a class="toc-backref" href="#id43" name="source-document">Source document</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id43" id="source-document" name="source-document">Source document</a></h1>
<p>The source document is named wxPythonManual.txt and can be found by
clicking the link at the bottom of this page (assuming you are viewing
the html file). It is written using a fantastic formatting convention
@@ -973,8 +1255,8 @@ called reStructuredText. The wxPythonManual.html file is created
using the Docutils utilities, which can turn reStructuredText
documents into html, xml, pdf, and even OpenOffice files.</p>
</div>
<div class="section" id="submitting-changes-to-the-source-document">
<h1><a class="toc-backref" href="#id44" name="submitting-changes-to-the-source-document">Submitting changes to the source document</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id44" id="submitting-changes-to-the-source-document" name="submitting-changes-to-the-source-document">Submitting changes to the source document</a></h1>
<p>Some items in the source text file look like this:</p>
<pre class="literal-block">
.. This is text from the wxWidgets documentation that needs to be
@@ -991,8 +1273,8 @@ to you and will show my gratitude by adding your name to the list of
contributors. (Contributors who also send me gifts of coffee,
chocolate, or currency will have their names listed in bold.)</p>
</div>
<div class="section" id="contributors">
<h1><a class="toc-backref" href="#id45" name="contributors">Contributors</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id45" id="contributors" name="contributors">Contributors</a></h1>
<p>Individuals who contributed to this documentation (in order by last
name):</p>
<ul class="simple">
@@ -1003,8 +1285,8 @@ name):</p>
<li>Vadim Zeitlin</li>
</ul>
</div>
<div class="section" id="license">
<h1><a class="toc-backref" href="#id46" name="license">License</a></h1>
<div class="section">
<h1><a class="toc-backref" href="#id46" id="license" name="license">License</a></h1>
<p>This document began as a translation of the wxWidgets documentation.
As such, it adheres to the same license, which is provided here:</p>
<pre class="literal-block">