simple oop question (hopefully)

E

Eric_Dexter

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

Eric_Dexter

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

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,733
Messages
2,569,440
Members
44,830
Latest member
ZADIva7383

Latest Threads

Top