How to Use wxPython Demo Code
This wiki entry will explain how to use some code from the wxPython Demo in your own project. I'm going to use the wx.AboutBox in this example.
Open up Python and create a file with the following contents:
1 import wx
2
3 class MyApp(wx.App):
4 def __init__(self, redirect=False, filename=None):
5 wx.App.__init__(self, redirect, filename)
6 self.frame = wx.Frame(None, wx.ID_ANY, title='My Title')
7
8 self.panel = wx.Panel(self.frame, wx.ID_ANY)
9
10 if __name__ == '__main__':
11 app = MyApp()
12 app.MainLoop()
Now, open the wxPython Demo (if you don't have it, you can download it here: http://wxpython.org/download.php#demo) and do the following
- Close the helpful tips and expand the tree control on the left that's labeled "Common Dialogs"
Choose the "AboutBox" by clicking on it to highlight it.
- On the right, you'll see three tabs. Choose the one marked "Demo Code"
- Copy and paste from it until you have the following:
Example
1 import wx
2 from wx.lib.wordwrap import wordwrap
3
4 class MyApp(wx.App):
5 def __init__(self, redirect=False, filename=None):
6 wx.App.__init__(self, redirect, filename)
7 self.frame = wx.Frame(None, wx.ID_ANY, title='My Title')
8
9 self.panel = wx.Panel(self.frame, wx.ID_ANY)
10
11 # copy the code for the AboutBox
12
13 # change the button's parent to refer to my panel
14 b = wx.Button(self.panel, -1, "Show a wx.AboutBox", (50,50))
15 self.Bind(wx.EVT_BUTTON, self.OnButton, b)
16
17 self.frame.Show()
18
19 def OnButton(self, evt):
20 # First we create and fill the info object
21 info = wx.AboutDialogInfo()
22 info.Name = "Hello World"
23 info.Version = "1.2.3"
24 info.Copyright = "(C) 2006 Programmers and Coders Everywhere"
25 info.Description = wordwrap(
26 "A \"hello world\" program is a software program that prints out "
27 "\"Hello world!\" on a display device. It is used in many introductory "
28 "tutorials for teaching a programming language."
29 "\n\nSuch a program is typically one of the simplest programs possible "
30 "in a computer language. A \"hello world\" program can be a useful "
31 "sanity test to make sure that a language's compiler, development "
32 "environment, and run-time environment are correctly installed.",
33 # change the wx.ClientDC to use self.panel instead of self
34 350, wx.ClientDC(self.panel))
35 info.WebSite = ("http://en.wikipedia.org/wiki/Hello_world", "Hello World home page")
36 info.Developers = [ "Joe Programmer",
37 "Jane Coder",
38 "Vippy the Mascot" ]
39
40 # change the wx.ClientDC to use self.panel instead of self
41 info.License = wordwrap(licenseText, 500, wx.ClientDC(self.panel))
42
43 # Then we call wx.AboutBox giving it that info object
44 wx.AboutBox(info)
45
46 overview = """<html><body>
47 <h2><center>wx.AboutBox</center></h2>
48
49 This function shows the native standard about dialog containing the
50 information specified in info. If the current platform has a native
51 about dialog which is capable of showing all the fields in info, the
52 native dialog is used, otherwise the function falls back to the
53 generic wxWidgets version of the dialog.
54
55 </body></html>
56 """
57
58
59 licenseText = "blah " * 250 + "\n\n" +"yadda " * 100
60
61 if __name__ == '__main__':
62 app = MyApp()
63 app.MainLoop()
Basically, I copied the "from x import" line and then everything from the instantiation of the button down to the end of the button event handler. I also copied the "overview" and "licenseText" variables. Then I changed every instance where "self" referred to the Panel object in the demo code to "self.panel" so it would match my panel object.
Hopefully all that is clear. If you have questions, post to the wxPython list: http://wxpython.org/maillist.php