[wxPython-users] Returned Values from Multi-Entry Dialog Box
Christopher Barker
Chris.Barker at noaa.gov
Tue Nov 7 13:10:35 PST 2006
Rich Shepard wrote:
> I have derived a class from wx.Dialog that allows the user to enter text
> strings for each of four variables. The dialog box examples I've found all
> print a message that "OK" was selected, but I want the values of each of
> these four variables.
>
> Are all the variables available for use when the "OK" button is selected?
As long as you have the instance around, you should be able to access
its attributes and methods.
> Do I declare them global so I can use them in a different class in the same
> module?
ouch! no.
> Is there an example I can see that shows how this is correctly done?
Here is a simple one that should make it clear:
class MyCheckDialog(wx.Dialog):
def __init__(self, Choices):
wx.Dialog.__init__(self, None, -1, 'wxDialog')
self.Choices = Choices
self.clb = wx.CheckListBox(self, -1, wx.DefaultPosition,
wx.DefaultSize, self.Choices)
ok = wx.Button(self, wx.ID_OK, 'Ok')
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.clb, 1, wx.EXPAND|wx.ALL, 5)
sizer.Add(ok, 0, wx.ALIGN_RIGHT|wx.ALL^wx.TOP, 5)
self.SetSizer(sizer)
#self.Fit()
self.Center() # make it come up on the center of the screen
def GetChecked(self):
Checked = []
for (index, item) in enumerate(self.Choices):
if self.clb.IsChecked(index):
Checked.append(item)
return Checked
## And to use it:
a = wx.App()
myd = MyCheckDialog(['check', 'list', 'box', 'another'])
if myd.ShowModal() != wx.ID_OK:
exit(1)
else:
print "You checked:", myd.GetChecked()
If you put all that in a file and run it, you'll see how it works
--
Christopher Barker, Ph.D.
Oceanographer
NOAA/OR&R/HAZMAT (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
More information about the wxpython-users
mailing list