simple oop question (hopefully)

Eric_Dexter at msn.com Eric_Dexter at msn.com
Sun Oct 29 20:11:10 EST 2006


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])




More information about the Python-list mailing list