wxWidgets/wxPython/tests/dynamicform.py

63 lines
1.8 KiB
Python
Raw Normal View History

from wxPython.wx import *
class FieldData:
def __init__(self, name, label, shortHelp="", defValue="",
size=(-1, -1), style=0, ID=-1):
self.name = name
self.label = label
self.shortHelp = shortHelp
self.defValue = defValue
self.size = size
self.style = style
self.ID = ID
class DynamicForm(wxPanel):
def __init__(self, parent, ID, fieldData):
wxPanel.__init__(self, parent, ID)
sizer = wxFlexGridSizer(cols=2, vgap=5, hgap=5)
for field in fieldData:
label = wxStaticText(self, -1, field.label)
sizer.Add(label, 0, wxALIGN_RIGHT)
text = wxTextCtrl(self, field.ID, field.defValue,
size=field.size, style=field.style)
if field.shortHelp:
text.SetToolTip(wxToolTip(field.shortHelp))
self.__dict__["get_"+field.name] = text.GetValue
self.__dict__["set_"+field.name] = text.SetValue
sizer.Add(text, 0, wxEXPAND)
sizer.Fit(self)
self.SetAutoLayout(true)
self.SetSizer(sizer)
class TestFrame(wxFrame):
testFields = [
FieldData("fname", "First name:", "Enter someone's first name"),
FieldData("lname", "Last name:", "Enter someone's last name"),
FieldData("email", "Email address:", "just figure it out..."),
]
def __init__(self):
wxFrame.__init__(self, None, -1, "This is a test")
form = DynamicForm(self, -1, self.testFields)
form.set_fname("Robin")
form.set_lname("Dunn")
self.form = form
self.Fit()
EVT_CLOSE(self, self.OnCloseWindow)
def OnCloseWindow(self, evt):
print self.form.get_email()
self.Destroy()
app = wxPySimpleApp()
frame = TestFrame()
frame.Show(true)
app.MainLoop()