[Tkinter-discuss] Re: Yet Another Table widget...
Jeff Epler
jepler at unpythonic.net
Fri Jan 21 21:09:15 CET 2005
I thought maybe the list would benefit from hearing about how I chose to wrap
the bwidget family of widgets for my pybwidget package.
On Fri, Jan 21, 2005 at 10:40:54AM +0000, Martin Franklin wrote:
> First thing to note is that tablelist is pure Tcl package and can be
> either installed in the standard tcl package location or you can tell
> Tcl where it is (I choose the later since I don't always have permission
> to install)
[...]
> To use the package from this location Tcl I need to execute this:-
>
> root.tk.call("lappend", "auto_path", "/home/martin/tablelist3.7")
[...]
> Next you have to register the package so that Tkinter can use/find it
>
> root.tk.call("package", "require", "tablelist")
in pybwidget, setup.py installs the .tcl files (and a few other files) in a
known location relative to the Python installation. (The downside of this is
that the package is not available in "wish", the tk interactive shell)
That path is defined as
_datadir = os.path.join(sys.prefix, "share", "pybwidget")
The files are installed by the 'data_files=' parameter to setup()
When a bwidget is created, the _datadir is added to auto_path if it
wasn't already present, and then the package is require'd:
def _require(self, master):
auto_path = master.tk.call("set", "auto_path")
if not _datadir in auto_path:
master.tk.call("lappend", "auto_path", _datadir)
master.tk.call("package", "require", "BWidget")
> class TableList(Widget):
> def __init__(self, master=None, cnf={}, **kw):
> Widget.__init__(self, master, 'tablelist::tablelist', cnf, kw)
>
> Worth a mention is the tablelist::tablelist - it took me 20 minutes to
> work this out... tablelist the Tcl widget is in a Tcl namespace called
> tablelist hence the :: notation I guess
In bwidget, the class names and the tcl commands to create the widgets were
generally identical, so I put a __init__ in a base class:
def __init__(self, master, cnf={}, **kw):
self._require(master)
Tkinter.Widget.__init__(self, master, self.__class__.__name__, cnf, kw)
Jeff
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mail.python.org/pipermail/tkinter-discuss/attachments/20050121/20d14a03/attachment.pgp
More information about the Tkinter-discuss
mailing list