I have updated my script to use wx.RadioButton instead, which works
perfectly on my mac again, but now the submit button doesn't show up on
the pc and I can't click in the netid field on the pc either. any
ideas?

# BEGIN CODE

import wx;

SUBMIT_BUTTON = wx.ID_HIGHEST + 10;

class regFrame(wx.Frame):
   def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title,
                          pos=(100, 100), size=(800, 600));

        fileDialog = wx.FileDialog(self, "Select a file to which to write",
                                   style = wx.SAVE | wx.OVERWRITE_PROMPT,
                                   wildcard="*.txt|Text");
        if(fileDialog.ShowModal() != wx.ID_OK):
            print "No file specified - closing";
            self.Close();
            return;
        write_file = fileDialog.GetPath();

        self.write_file = open(write_file, "a");

        # init main frame with menu and status bars

        self.panel = wx.Panel ( self, -1 )

        menuBar = wx.MenuBar();
        fileMenu = wx.Menu();

        fileMenu.Append(wx.ID_ABOUT, "&About\tAlt-A", "About this program");
        fileMenu.AppendSeparator();
        fileMenu.Append(wx.ID_EXIT, "&Quit\tAlt-Q", "Quit this program");
        menuBar.Append(fileMenu, "&File");
        self.SetMenuBar(menuBar);

        self.CreateStatusBar();

        self.ctrl_sizer = wx.GridBagSizer(5, 15);

        # build the controls

        instructions = "  Enter your netid and size in the " + \
            "boxes below and press the 'Submit Order' button to place " + \
            "your order.";

        self.instruction_text = wx.StaticText(self, -1, instructions);
        self.id_text = wx.StaticText(self, -1, "  netid");
        self.id_input = wx.TextCtrl(self, -1, "", size=(160, -1));
        self.size_text = wx.StaticText(self, -1, "size");
        self.submit_button = wx.Button(self, SUBMIT_BUTTON, "Submit Order");

        # put the controls into a grid

        self.ctrl_sizer.Add(self.instruction_text, (0, 0),
                            span=(1, 3), flag=wx.EXPAND);

        self.ctrl_sizer.Add(self.id_text,    (1, 0), flag=wx.EXPAND);
        self.ctrl_sizer.Add(self.size_text,  (1, 1), flag=wx.EXPAND);
        self.ctrl_sizer.Add(self.id_input,   (2, 0), flag=wx.HORIZONTAL);

        # TO MODIFY THE LIST OF SIZES, CHANGE THIS:
        self.valid_sizes = ['4XLT', '3XLT', '2XLT', '2XL', 'XLT',
                            'XL', 'LT', 'L', 'M', 'S', 'XS', 'XXS'];
        first_size = 1;
        size_count = 0;
        self.button_array = [];
        for this_size in self.valid_sizes:
            this_button = '';
            if first_size:
                this_button = wx.RadioButton(self.panel, -1, this_size,
                                             style=wx.RB_GROUP);
                first_size = 0;
            else:
                this_button = wx.RadioButton(self.panel, -1, this_size);
            self.button_array.append(this_button);
            self.ctrl_sizer.Add(this_button, (size_count+2, 1));
            size_count += 1;

        self.ctrl_sizer.Add(self.submit_button,  (2, 2), flag=wx.HORIZONTAL);

        self.SetSizer(self.ctrl_sizer);
        self.ctrl_sizer.Fit(self);
        # register event handling functions
        wx.EVT_MENU(self,   wx.ID_ABOUT, self.OnAbout);
        wx.EVT_MENU(self,   wx.ID_EXIT,  self.OnExit);
        wx.EVT_BUTTON(self, SUBMIT_BUTTON, self.OnSubmit);

   def OnAbout(self, evt):
        return;

   def OnExit(self, evt):
        if(self.write_file):
            self.write_file.close();
        self.Close();

   def OnSubmit(self, evt):
        selected_index = -1;
        this_index = 0;
        for this_button in self.button_array:
            if this_button.GetValue():
                selected_index = this_index;
            this_index += 1;

        # make sure the user selected something
        if selected_index == -1:
            wx.MessageBox("You must select a size to place your order",
                          "Please select a size",
                          wx.ICON_EXCLAMATION);
            return;

        # build a tab-delimited-text line of the data and write it
        save_fields = [self.id_input.GetValue(),
                       self.valid_sizes[selected_index]];
        save_str = "\t".join(save_fields);

        # ask for validation before we save
        dialog_str = "Are you sure this is correct?" + \
            "\n  Netid: " + save_fields[0] + \
            "\n  Size: " + save_fields[1];
        if(wx.MessageBox(dialog_str, "Confirm Order",
                         wx.YES_NO | wx.ICON_EXCLAMATION)
           == wx.YES):
            # write it out and flush the buffer to make sure it's on disk
            self.write_file.write(save_str + "\n");
            self.write_file.flush();
            wx.MessageBox("Your order has been saved. Thanks!");
            # reset the controls for the next user
            self.id_input.SetValue('');
            self.button_array[selected_index].SetValue(0);



class pyReg2App(wx.App):
   def OnInit(self):
        main_frame = regFrame(None, "Senior Jacket Registration");
        self.SetTopWindow(main_frame);
        main_frame.Show(True);
        return True;

reg_app = pyReg2App(redirect=False);
reg_app.MainLoop();
# END CODE

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to