calling a class method from a menu in a different class
Chris Hare
chare at labr.net
Mon Aug 2 20:06:26 EDT 2010
What I am trying to do is call a class function from a menu, for example
displaySubMenu.add_radiobutton(label="Medium",
variable=radarPanelSize, command=radarWidgets.refresh)
class radarWidgets:
def __init__(self,root):
self.window = root
def refresh(self):
global radar
global refreshTimer
self.refreshTimer.cancel()
logging.debug("handlesRadarRefreshByTimer()")
#
# destroy the existing frame the radar is in
#
self.w.destroy()
self.lblLastUpdate.destroy()
self.btnRefresh.destroy()
#
# rebuild the radarWidgets
#
self.createImage()
self.refreshTimer = threading.Timer( 900, self.refresh)
self.refreshTimer.start()
This doesn't work because the instance of radarWidgets was defined in a different class ......
class mainDisplay:
def __init__(self,root):
self.window = root
def show(self):
#
# Configure the base frame
#
base=Frame(self.window,bg=backColor,width=1200, height=800)
base.grid()
frameRadar = Frame(base, bd=0, bg=backColor)
frameRadar.grid(row=2,column=1,sticky=N+E+S+W)
#
radar = radarWidgets(frameRadar)
radar.show()
so the actual instance is called "radar". If I put the instance name in the menu item, I get an error that "radar" is unknown. If I use RadarWidgets.refresh ins the command for the menu, I get the error:
TypeError: unbound method refresh() must be called with radarWidgets instance as first argument (got nothing instead)
Any ideas?
Thanks!
More information about the Python-list
mailing list