| 1 | #!/bin/env python |
| 2 | #---------------------------------------------------------------------------- |
| 3 | # Name: test7.py |
| 4 | # Purpose: A minimal wxPython program that is a bit smarter than test1. |
| 5 | # |
| 6 | # Author: Robin Dunn |
| 7 | # |
| 8 | # Created: A long time ago, in a galaxy far, far away... |
| 9 | # RCS-ID: $Id$ |
| 10 | # Copyright: (c) 1998 by Total Control Software |
| 11 | # Licence: wxWindows license |
| 12 | #---------------------------------------------------------------------------- |
| 13 | |
| 14 | |
| 15 | ## import all of the wxPython GUI package |
| 16 | from wxPython.wx import * |
| 17 | |
| 18 | |
| 19 | #--------------------------------------------------------------------------- |
| 20 | |
| 21 | ## Create a new frame class, derived from the wxPython Frame. |
| 22 | class MyFrame(wxFrame): |
| 23 | |
| 24 | def __init__(self, parent, id, title): |
| 25 | # First, call the base class' __init__ method to create the frame |
| 26 | wxFrame.__init__(self, parent, id, title, |
| 27 | wxPoint(100, 100), wxSize(160, 100)) |
| 28 | |
| 29 | # Associate some events with methods of this class |
| 30 | EVT_SIZE(self, self.OnSize) |
| 31 | EVT_MOVE(self, self.OnMove) |
| 32 | |
| 33 | # Add a panel and some controls to display the size and position |
| 34 | panel = wxPanel(self, -1) |
| 35 | wxStaticText(panel, -1, "Size:", |
| 36 | wxDLG_PNT(panel, wxPoint(4, 4)), wxDefaultSize) |
| 37 | wxStaticText(panel, -1, "Pos:", |
| 38 | wxDLG_PNT(panel, wxPoint(4, 14)), wxDefaultSize) |
| 39 | self.sizeCtrl = wxTextCtrl(panel, -1, "", |
| 40 | wxDLG_PNT(panel, wxPoint(24, 4)), |
| 41 | wxDLG_SZE(panel, wxSize(36, -1)), |
| 42 | wxTE_READONLY) |
| 43 | |
| 44 | self.posCtrl = wxTextCtrl(panel, -1, "", |
| 45 | wxDLG_PNT(panel, wxPoint(24, 14)), |
| 46 | wxDLG_SZE(panel, wxSize(36, -1)), |
| 47 | wxTE_READONLY) |
| 48 | |
| 49 | |
| 50 | # This method is called automatically when the CLOSE event is |
| 51 | # sent to this window |
| 52 | def OnCloseWindow(self, event): |
| 53 | # tell the window to kill itself |
| 54 | self.Destroy() |
| 55 | |
| 56 | |
| 57 | # This method is called by the System when the window is resized, |
| 58 | # because of the association above. |
| 59 | def OnSize(self, event): |
| 60 | size = event.GetSize() |
| 61 | self.sizeCtrl.SetValue("%s, %s" % (size.width, size.height)) |
| 62 | |
| 63 | # tell the event system to continue looking for an event handler, |
| 64 | # so the default handler will get called. |
| 65 | event.Skip() |
| 66 | |
| 67 | # This method is called by the System when the window is moved, |
| 68 | # because of the association above. |
| 69 | def OnMove(self, event): |
| 70 | pos = event.GetPosition() |
| 71 | self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y)) |
| 72 | |
| 73 | |
| 74 | |
| 75 | #--------------------------------------------------------------------------- |
| 76 | |
| 77 | # Every wxWindows application must have a class derived from wxApp |
| 78 | class MyApp(wxApp): |
| 79 | |
| 80 | # wxWindows calls this method to initialize the application |
| 81 | def OnInit(self): |
| 82 | |
| 83 | # Create an instance of our customized Frame class |
| 84 | frame = MyFrame(NULL, -1, "This is a test") |
| 85 | frame.Show(true) |
| 86 | |
| 87 | # Tell wxWindows that this is our main window |
| 88 | self.SetTopWindow(frame) |
| 89 | |
| 90 | # Return a success flag |
| 91 | return true |
| 92 | |
| 93 | #--------------------------------------------------------------------------- |
| 94 | |
| 95 | |
| 96 | app = MyApp(0) # Create an instance of the application class |
| 97 | app.MainLoop() # Tell it to start processing events |
| 98 | |
| 99 | |
| 100 | #---------------------------------------------------------------------------- |
| 101 | # |
| 102 | |
| 103 | |
| 104 | |
| 105 | |
| 106 | |
| 107 | |
| 108 | |
| 109 | |
| 110 | |