K
Kevin Walzer
I'm trying to create a custom Tkinter widget class, and I'm having some
difficulty getting it set up properly.
The class is called MacToolbar, saved in its own module MacToolbar.py,
and imported with this statement:
import MacToolbar
Here is the relevant portion of the class:
###relevant class code
class MacToolbar:
def __init__(self, master):
self.tk.call("package", "require", "macsearchfield")
self.tk.call('package', 'require', 'tile')
def create(self):
self.baseframe = Tile.Frame(self, master)
self.baseframe.pack(side='top', fill='both', expand='no')
def toolbar(self):
self.create()
self.newframe = Tile.Frame(self.baseframe)
self.newframe.pack(fill='both', expand='yes')
self.buttonframe = Tile.Frame(self.newframe)
self.buttonframe.pack(side='top', fill='both', expand = 'yes')
I'm a bit confused on how to call a class that is imported via a module.
Both approaches I try produce errors:
The first approach:
self.topframe = MacToolbar.toolbar(self.mainframe)
yields this error:
AttributeError: 'module' object has no attribute 'toolbar'
The second approach:
self.topframe = MacToolbar.MacToolbar.toolbar(self.mainframe)
yields this error:
TypeError: unbound method toolbar() must be called with MacToolbar
instance as first argument (got Frame instance instead)
I was expecting to be able to use the standard Class.Method notation in
calling MacToolbar class methods, but it appears that this does not work
at all: that's what I see in the first error above. Instead I have to
use Module.Class.Method notation? I've never seen this before.
Can someone point out what I am doing wrong, either in the construction
of the class, the way it's imported, or in how I'm calling methods?
difficulty getting it set up properly.
The class is called MacToolbar, saved in its own module MacToolbar.py,
and imported with this statement:
import MacToolbar
Here is the relevant portion of the class:
###relevant class code
class MacToolbar:
def __init__(self, master):
self.tk.call("package", "require", "macsearchfield")
self.tk.call('package', 'require', 'tile')
def create(self):
self.baseframe = Tile.Frame(self, master)
self.baseframe.pack(side='top', fill='both', expand='no')
def toolbar(self):
self.create()
self.newframe = Tile.Frame(self.baseframe)
self.newframe.pack(fill='both', expand='yes')
self.buttonframe = Tile.Frame(self.newframe)
self.buttonframe.pack(side='top', fill='both', expand = 'yes')
I'm a bit confused on how to call a class that is imported via a module.
Both approaches I try produce errors:
The first approach:
self.topframe = MacToolbar.toolbar(self.mainframe)
yields this error:
AttributeError: 'module' object has no attribute 'toolbar'
The second approach:
self.topframe = MacToolbar.MacToolbar.toolbar(self.mainframe)
yields this error:
TypeError: unbound method toolbar() must be called with MacToolbar
instance as first argument (got Frame instance instead)
I was expecting to be able to use the standard Class.Method notation in
calling MacToolbar class methods, but it appears that this does not work
at all: that's what I see in the first error above. Instead I have to
use Module.Class.Method notation? I've never seen this before.
Can someone point out what I am doing wrong, either in the construction
of the class, the way it's imported, or in how I'm calling methods?