Wrap Tk widget using a class

K

Kevin Walzer

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::pnb', self)


def add(self, child):
self.master.call('::tclmacbag::pnb', '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.
 
F

Fredrik Lundh

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>
 

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,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top