]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/docs/wxPackage.html
fixed deadlock when calling wxPostEvent() from worker thread
[wxWidgets.git] / wxPython / docs / wxPackage.html
index fb8cbb71e83c5c79b3b596102f323706c77c1f23..c1fdcef921ed50a89607f1cb062b3448efd8c752 100644 (file)
@@ -3,12 +3,12 @@
 <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.1: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.4.1: 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-02-04" />
+<meta name="date" content="2004-03-26" />
 <link rel="stylesheet" href="default.css" type="text/css" />
 </head>
 <body>
 <tr><th class="docinfo-name">Organization:</th>
 <td><a class="first last reference" href="http://www.orbtech.com/">Orbtech</a></td></tr>
 <tr><th class="docinfo-name">Date:</th>
-<td>2004-02-04</td></tr>
+<td>2004-03-26</td></tr>
 <tr><th class="docinfo-name">Revision:</th>
-<td>1.3</td></tr>
+<td>1.4</td></tr>
 </tbody>
 </table>
-<div class="contents topic" id="contents">
-<p class="topic-title"><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 +46,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,10 +69,10 @@ 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="literal"><span class="pre">import</span> <span class="pre">*</span></tt>, which is a dangerous
+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>
 <p>The second reason is to remove what some perceive to be a &quot;wart.&quot;  For
 example, the following code is rather ugly in that the &quot;wx&quot; prefix on
@@ -93,8 +93,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 +108,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 +123,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,17 +161,102 @@ 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>
-<p>Example programs are included in the wxPython/samples/wx_examples
-directory, and are documented in the <a class="reference" href="wxPythonExamples.html">wxPythonExamples</a> documentation
-file.  Also, all the code in the py package uses the new wx syntax.
-You can learn more about these in the <a class="reference" href="PyManual.html">PyManual</a>.</p>
-</div>
+<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.
+Here is one of them, it is the <tt class="docutils literal"><span class="pre">simple</span></tt> sample.</p>
+<pre class="literal-block">
+#----------------------------------------------------------------------
+# A very simple wxPython example.  Just a wx.Frame, wx.Panel,
+# wx.StaticText, wx.Button, and a wx.BoxSizer, but it shows the basic
+# structure of any wxPython application.
+#----------------------------------------------------------------------
+
+import wx
+
+
+class MyFrame(wx.Frame):
+    &quot;&quot;&quot;
+    This is MyFrame.  It just shows a few controls on a wxPanel,
+    and has a simple menu.
+    &quot;&quot;&quot;
+    def __init__(self, parent, title):
+        wx.Frame.__init__(self, parent, -1, title,
+                          pos=(150, 150), size=(350, 200))
+
+        # Create the menubar
+        menuBar = wx.MenuBar()
+
+        # and a menu 
+        menu = wx.Menu()
+
+        # add an item to the menu, using \tKeyName automatically
+        # creates an accelerator, the third param is some help text
+        # that will show up in the statusbar
+        menu.Append(wx.ID_EXIT, &quot;E&amp;xit\tAlt-X&quot;, &quot;Exit this simple sample&quot;)
+
+        # bind the menu event to an event handler
+        self.Bind(wx.EVT_MENU, self.OnTimeToClose, id=wx.ID_EXIT)
+
+        # and put the menu on the menubar
+        menuBar.Append(menu, &quot;&amp;File&quot;)
+        self.SetMenuBar(menuBar)
+
+        self.CreateStatusBar()
+        
+
+        # Now create the Panel to put the other controls on.
+        panel = wx.Panel(self)
+
+        # and a few controls
+        text = wx.StaticText(panel, -1, &quot;Hello World!&quot;)
+        text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
+        text.SetSize(text.GetBestSize())
+        btn = wx.Button(panel, -1, &quot;Close&quot;)
+        funbtn = wx.Button(panel, -1, &quot;Just for fun...&quot;)
+
+        # bind the button events to handlers
+        self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, btn)
+        self.Bind(wx.EVT_BUTTON, self.OnFunButton, funbtn)
+
+        # Use a sizer to layout the controls, stacked vertically and with
+        # a 10 pixel border around each
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        sizer.Add(text, 0, wx.ALL, 10)
+        sizer.Add(btn, 0, wx.ALL, 10)
+        sizer.Add(funbtn, 0, wx.ALL, 10)
+        panel.SetSizer(sizer)
+        panel.Layout()
+
+
+    def OnTimeToClose(self, evt):
+        &quot;&quot;&quot;Event handler for the button click.&quot;&quot;&quot;
+        print &quot;See ya later!&quot;
+        self.Close()
+
+    def OnFunButton(self, evt):
+        &quot;&quot;&quot;Event handler for the button click.&quot;&quot;&quot;
+        print &quot;Having fun yet?&quot;
+
+
+class MyApp(wx.App):
+    def OnInit(self):
+        frame = MyFrame(None, &quot;Simple wxPython App&quot;)
+        self.SetTopWindow(frame)
+
+        print &quot;Print statements go to this stdout window by default.&quot;
+
+        frame.Show(True)
+        return True
+        
+app = MyApp(redirect=True)
+app.MainLoop()
+
+
+</pre>
 </div>
-<hr class="footer" />
-<div class="footer">
-Generated on: 2004-03-12 19:55 UTC.
 </div>
 </body>
 </html>