I am experiencing a strange cross-platform issue with my python program. I am using wxRadioBox to create radio buttons. When I run the python code on a mac, everything works perfectly, but not on a pc. On the pc, no matter what selection I made, the form would think that I was choosing the 1st (top) option.
I am astounded that everything else could work and something this simple could have cross-platform issues. I looked into wxRadioBox online and no one seems to have any similar errors. I was thinking it might be the installation of the wx module on the pc, but I somehow doubt it. Does anyone have any insight as to what is going on here? # 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 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 # TO MODIFY THE LIST OF SIZES, CHANGE THIS: self.valid_sizes = ['4XLT', '3XLT', '2XLT', '2XL', 'XLT', 'LT', 'XL', 'L', 'M', 'S', 'XS', 'XXS']; instructions = "Enter your netid, full name, 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=(100, -1)); self.name_text = wx.StaticText(self, -1, "name"); self.name_input = wx.TextCtrl(self, -1, "", size=(100, -1)); self.size_text = wx.StaticText(self, -1, "size selection"); self.size_selection = wx.RadioBox(self, -1, choices = self.valid_sizes, style = wx.RA_SPECIFY_ROWS ); 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, 4), flag=wx.EXPAND); self.ctrl_sizer.Add(self.id_text, (1, 0), flag=wx.EXPAND); self.ctrl_sizer.Add(self.name_text, (1, 1), flag=wx.EXPAND); self.ctrl_sizer.Add(self.size_text, (1, 2), flag=wx.EXPAND); self.ctrl_sizer.Add(self.id_input, (2, 0), flag=wx.HORIZONTAL); self.ctrl_sizer.Add(self.name_input, (2, 1), flag=wx.HORIZONTAL); self.ctrl_sizer.Add(self.size_selection, (2, 2), flag=wx.EXPAND); self.ctrl_sizer.Add(self.submit_button, (2, 3), 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): # build a tab-delimited-text line of the data and write it save_fields = [self.id_input.GetValue(), self.name_input.GetValue(), self.size_selection.GetStringSelection()]; 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 Name: " + save_fields[1] + \ "\n Size: " + save_fields[2]; 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.name_input.SetValue(''); self.size_selection.SetSelection(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