Tkinter wrappers for TkTreeCtrl and Tile

Discussion in 'Python' started by Harlin Seritt, Mar 15, 2005.

  1. I was looking at the Tcl/Tk sourceforge page and found that there were
    a couple of new widgets being produced for Tcl 8.5. Does anyone know if
    there are any Tkinter wrappers somewhere?

    thanks,

    Harlin
     
    Harlin Seritt, Mar 15, 2005
    #1
    1. Advertisements

  2. Harlin,


    I can't see the web page saying these will be included in Tk 8.5 can you
    give me the URL?

    As far as wrappers go, if they don't exist (and I don't think they do)
    it is fairly easy to create them provided they are written in a very
    similar style to 'standard' Tk widgets. Somone usually steps up and
    patches Tkinter.py to include changes in the Tk core, but usually only
    when a new _final_ version is released...

    Martin.
     
    Martin Franklin, Mar 15, 2005
    #2
    1. Advertisements

  3. Martin,

    Take a look here:
    http://mail.python.org/pipermail/tkinter-discuss/2004-March/000010.html
    It is a well-known post from what I understand. You may have already
    seen it before. Actually, (as I'm looking at a 8.4 demo set from
    ActiveTcl distribution), it seems the Tree widget has been added to the
    8.4 set. I don't think the Tiles has been added just yet though.

    Harlin
     
    Harlin Seritt, Mar 15, 2005
    #3

  4. Thanks, I must have missed it first time round...
    after more googling I did find a reference to Tile going
    into Tk 8.5 but it was not on the tcltk wiki recent changes
    for 8.5:

    http://wiki.tcl.tk/10630

    Which made me think it will not go in.....

    Cheers,
    Martin.
     
    Martin Franklin, Mar 15, 2005
    #4
  5. Martin,

    If I may ask, who actually works on the Tkinter module? Is there a
    certain group that does this? I'm just curious as I've never been able
    to find this information. I know there are, of course, someone who
    develops Tk but just not sure who does this on the Python side.

    Thanks,

    Harlin
     
    Harlin Seritt, Mar 15, 2005
    #5
  6. Harlin,

    There is no Tkinter group of core developers, if somthing needs doing
    then it is done by those who need it (AFAIK) I have made a few small
    patches to Tkinter.py in the past and will do so again should I need to


    I have been looking some more at Tile - it's come a long way in the
    last few months (since the last time I looked at it), I have even
    started writting a *test* wrapper for it (I first had to build tcl, tk,
    tile and python from source!)

    I have created a Style class (as a mixin like the Pack and Grid classes
    in Tkinter.py

    I have also wrapped the Tile.Button but right now it extends
    Tkinter.Widget class (as it is starting to look like a large chunk of
    work wrapping Tile from scratch;-)

    That said I have got a Tile Button example working (and I can change
    it's style) so perhaps not that much work

    I've cc'd the tkinter mailing list to see if there is any more interest
    over there...

    Cheers
    Martin
     
    Martin Franklin, Mar 15, 2005
    #6
  7. (snip)
    Do you happen to have a sampling of this that I can get my hands on??

    Thanks for doing so!

    Harlin
     
    Harlin Seritt, Mar 15, 2005
    #7

  8. Harlin,

    Sure here is all 90 lines of it:-


    ######################################


    import Tkinter
    from Tkconstants import *


    class Style:
    def default(self, style, **kw):
    """Sets the default value of the specified option(s) in style"""
    pass

    def map_style(self, **kw):
    """Sets dynamic values of the specified option(s) in style. See
    "STATE MAPS", below."""
    pass

    def layout(self, style, layoutSpec):
    """Define the widget layout for style style. See "LAYOUTS" below
    for the format of layoutSpec. If layoutSpec is omitted, return the
    layout specification for style style. """
    pass

    def element_create(self, name, type, *args):
    """Creates a new element in the current theme of type type. The
    only built-in element type is image (see image(n)), although
    themes may define other element types (see
    Ttk_RegisterElementFactory).
    """
    pass

    def element_names(self):
    """Returns a list of all elements defined in the current theme.
    """
    pass

    def theme_create(self, name, parent=None, basedon=None):
    """Creates a new theme. It is an error if themeName already
    exists.
    If -parent is specified, the new theme will inherit styles,
    elements,
    and layouts from the parent theme basedon. If -settings is
    present,
    script is evaluated in the context of the new theme as per
    style theme
    settings.
    """
    pass

    def theme_settings(self, name, script):
    """Temporarily sets the current theme to themeName, evaluate
    script,
    then restore the previous theme. Typically script simply
    defines styles
    and elements, though arbitrary Tcl code may appear.
    """
    pass

    def theme_names(self):
    """Returns a list of the available themes. """
    return self.tk.call("style", "theme", "names")

    def theme_use(self, theme):
    """Sets the current theme to themeName, and refreshes all
    widgets."""
    return self.tk.call("style", "theme", "use", theme)



    class Button(Tkinter.Widget, Style):
    def __init__(self, master=None, cnf={}, **kw):
    master.tk.call("package", "require", "tile")
    Tkinter.Widget.__init__(self, master, 'ttk::button', cnf, kw)

    class Treeview(Tkinter.Widget):
    def __init__(self, master=None, cnf={}, **kw):
    master.tk.call("package", "require", "tile")
    Tkinter.Widget.__init__(self, master, 'ttk::treeview', cnf, kw)



    def callback():
    print "Hello"

    root = Tkinter.Tk()

    b = Button(root, text="Tile Button", command=callback)
    b.pack()

    print b.theme_names()

    b.theme_use("step")

    b1 = Tkinter.Button(root, text="Tk Button", command=callback)
    b1.pack()

    tree = Treeview(root)
    tree.pack()

    root.mainloop()


    ##############################
     
    Martin Franklin, Mar 15, 2005
    #8
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.