simple oop question (hopefully)

Eric_Dexter at msn.com Eric_Dexter at msn.com
Sun Oct 29 20:28:48 EST 2006


I am tagging this so I can find it again (google groups) www.dexrow.com
Eric_Dexter at msn.com wrote:
> 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