Wrap Tk widget using a class - Python
This is a discussion on Wrap Tk widget using a class - Python ; I'm trying to wrap a subset of a Tcl/Tk widget set called tclmacbag (see
http://tclmacbag.autons.net/ ) for use in my Tkinter application, using a
"macnotebook" class. I'm having some difficulty getting things
configured correctly.
Here is my class code:
from ...
-
Wrap Tk widget using a class
I'm trying to wrap a subset of a Tcl/Tk widget set called tclmacbag (see
http://tclmacbag.autons.net/) for use in my Tkinter application, using a
"macnotebook" class. I'm having some difficulty getting things
configured correctly.
Here is my class code:
from Tkinter import *
class Macnotebook:
def __init__(self, master):
self.master = master
self.master.call('package', 'require', 'tclmacbag')
def notebook(self):
self.master.call('::tclmacbag:
nb', self)
def add(self, child):
self.master.call('::tclmacbag:
nb', 'add', child)
Here is an example of how I'm calling this in my code:
from Macnotebook import Macnotebook
self.prefbook = Macnotebook.notebook(self.prefframe)
self.prefbook.pack(fill=BOTH, expand=YES, side=TOP)
This returns the following error in my console:
Traceback (most recent call last):
self.prefbook = Macnotebook.notebook(self.prefframe)
TypeError: unbound method notebook() must be called with Macnotebook
instance as first argument (got Frame instance instead)
Can anyone suggest how I might better structure the class so that this
works? I'm a bit of a newbie with OO, so any pointers are appreciated.
--
Kevin Walzer
Code by Kevin
http://www.codebykevin.com
-
Re: Wrap Tk widget using a class
Kevin Walzer wrote:
> Here is an example of how I'm calling this in my code:
>
> from Macnotebook import Macnotebook
>
> self.prefbook = Macnotebook.notebook(self.prefframe)
> self.prefbook.pack(fill=BOTH, expand=YES, side=TOP)
you're attempting to call the method in a class object. I suspect that
you have to create an instance of that class first:
self.prefbook = Macnotebook(self.prefframe)
self.prefbook.notebook() # create it
self.prefbook.pack(...)
# call self.prefbook.add() to add pages to the notebook
(it's probably a good idea to move the notebook creation code into the
__init__ method; two-stage construction isn't very pythonic...)
</F>