]>
Commit | Line | Data |
---|---|---|
05a03b01 RD |
1 | #---------------------------------------------------------------------- |
2 | # A very simple wxPython example. Just a wxFrame, wxPanel, | |
3 | # wxStaticText, wxButton, and a wxBoxSizer, 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): | |
90805926 RD |
16 | wx.Frame.__init__(self, parent, -1, title, |
17 | pos=(150, 150), size=(350, 200)) | |
05a03b01 RD |
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 | ||
90805926 RD |
74 | class MyApp(wx.App): |
75 | def OnInit(self): | |
76 | frame = MyFrame(None, "Simple wxPython App") | |
77 | frame.Show(True) | |
78 | self.SetTopWindow(frame) | |
79 | return True | |
80 | ||
81 | app = MyApp(True) | |
05a03b01 RD |
82 | app.MainLoop() |
83 |