| 1 | #---------------------------------------------------------------------- |
| 2 | # A very simple wxPython example. Just a wx.Frame, wx.Panel, |
| 3 | # wx.StaticText, wx.Button, and a wx.BoxSizer, but it shows the basic |
| 4 | # structure of any wxPython application. |
| 5 | #---------------------------------------------------------------------- |
| 6 | |
| 7 | import wx |
| 8 | |
| 9 | |
| 10 | class MyFrame(wx.Frame): |
| 11 | """ |
| 12 | This is MyFrame. It just shows a few controls on a wxPanel, |
| 13 | and has a simple menu. |
| 14 | """ |
| 15 | def __init__(self, parent, title): |
| 16 | wx.Frame.__init__(self, parent, -1, title, |
| 17 | pos=(150, 150), size=(350, 200)) |
| 18 | |
| 19 | # Create the menubar |
| 20 | menuBar = wx.MenuBar() |
| 21 | |
| 22 | # and a menu |
| 23 | menu = wx.Menu() |
| 24 | |
| 25 | # add an item to the menu, using \tKeyName automatically |
| 26 | # creates an accelerator, the third param is some help text |
| 27 | # that will show up in the statusbar |
| 28 | menu.Append(wx.ID_EXIT, "E&xit\tAlt-X", "Exit this simple sample") |
| 29 | |
| 30 | # bind the menu event to an event handler |
| 31 | self.Bind(wx.EVT_MENU, self.OnTimeToClose, id=wx.ID_EXIT) |
| 32 | |
| 33 | # and put the menu on the menubar |
| 34 | menuBar.Append(menu, "&File") |
| 35 | self.SetMenuBar(menuBar) |
| 36 | |
| 37 | self.CreateStatusBar() |
| 38 | |
| 39 | |
| 40 | # Now create the Panel to put the other controls on. |
| 41 | panel = wx.Panel(self) |
| 42 | |
| 43 | # and a few controls |
| 44 | text = wx.StaticText(panel, -1, "Hello World!") |
| 45 | text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD)) |
| 46 | text.SetSize(text.GetBestSize()) |
| 47 | btn = wx.Button(panel, -1, "Close") |
| 48 | funbtn = wx.Button(panel, -1, "Just for fun...") |
| 49 | |
| 50 | # bind the button events to handlers |
| 51 | self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, btn) |
| 52 | self.Bind(wx.EVT_BUTTON, self.OnFunButton, funbtn) |
| 53 | |
| 54 | # Use a sizer to layout the controls, stacked vertically and with |
| 55 | # a 10 pixel border around each |
| 56 | sizer = wx.BoxSizer(wx.VERTICAL) |
| 57 | sizer.Add(text, 0, wx.ALL, 10) |
| 58 | sizer.Add(btn, 0, wx.ALL, 10) |
| 59 | sizer.Add(funbtn, 0, wx.ALL, 10) |
| 60 | panel.SetSizer(sizer) |
| 61 | panel.Layout() |
| 62 | |
| 63 | |
| 64 | def OnTimeToClose(self, evt): |
| 65 | """Event handler for the button click.""" |
| 66 | print "See ya later!" |
| 67 | self.Close() |
| 68 | |
| 69 | def OnFunButton(self, evt): |
| 70 | """Event handler for the button click.""" |
| 71 | print "Having fun yet?" |
| 72 | |
| 73 | |
| 74 | class MyApp(wx.App): |
| 75 | def OnInit(self): |
| 76 | frame = MyFrame(None, "Simple wxPython App") |
| 77 | self.SetTopWindow(frame) |
| 78 | |
| 79 | print "Print statements go to this stdout window by default." |
| 80 | |
| 81 | frame.Show(True) |
| 82 | return True |
| 83 | |
| 84 | app = MyApp(redirect=True) |
| 85 | app.MainLoop() |
| 86 | |