I am just trying to acess a function in wordgrid (savefile) to a button that is defined in TestFrame. I can't seem to make it work I either get an error that my variable isn't global or it makes other complaints. thanks in advance.. sorry for the simple question..
import wx import wx.grid as gridlib import sys #--------------------------------------------------------------------------- class WordGrid(gridlib.Grid): def __init__(self, parent, log): gridlib.Grid.__init__(self, parent, -1) self.loadFile() self.CreateGrid(len(self.rows), self.widestRow) for r, row in enumerate(self.rows): for c, col in enumerate(row): self.SetCellValue(r, c, col) self.SetColSize(c, 10*self.widestCol) for c, label in enumerate(self.header): self.SetColLabelValue(c, label) def loadFile(self): #from_file infile = open(sys.argv[1], 'r') #The first argument passed in is the file name foundHeader = False self.rows = [] for line in infile: if sys.argv[2] in line: #look for the second argument and make that the header #removefirst = line.split(' ') self.header = line.split() #foundHeader = 'true' continue # we don't want to process this line any further else: self.rows.append(line.split()) self.widestRow = max([len(r) for r in self.rows]) self.widestCol = max([len(c) for c in [r for r in self.rows]]) def savefile(self): outfile = open(sys.argv[1], 'w') #open the file defined in the output line for writing for row in self.rows: outfile.write(row) print('this is a test to see if I can Crash it') class TestFrame(wx.Frame): def __init__(self, parent, log): wx.Frame.__init__(self, parent, -1, "Dex Tracker Sco Editor", size=(640,480)) p = wx.Panel(self, -1, style=0) grid = WordGrid(p, log) #grid = CustTableGrid(p, log) b = wx.Button(p, -1, "Save Grid") b.SetDefault() self.Bind(wx.EVT_BUTTON, self.OnButton, b) b.Bind(wx.EVT_SET_FOCUS, self.OnButtonFocus) bs = wx.BoxSizer(wx.VERTICAL) bs.Add(grid, 1, wx.GROW|wx.ALL, 5) bs.Add(b) p.SetSizer(bs) def OnButton(self, evt): print "button selected" grid = WordGrid(self, log).savefile() #self.WordGrid.savefile(self) def OnButtonFocus(self, evt): print "button focus" #--------------------------------------------------------------------------- #def main(): def main(From_File, find_string): """This is the entire editor for .sco files.. It doesn't realy care if it is music or not. Any file that you lay out with even rows and collums can be displayed The first argument passed to main is the file to be used and the second if the string to be used as the command to set up the header of the grid. The sting you wish to use to identify the header should be placed last so it doesn't show up in the grid. """ import sys app = wx.PySimpleApp() frame = TestFrame(None, sys.stdout) frame.Show(True) app.MainLoop() pass if __name__ == '__main__': import sys #try: main(sys.argv[1], sys.argv[2]) -- http://mail.python.org/mailman/listinfo/python-list