Using Tcl extensions with Python?

Discussion in 'Python' started by C Martin, Jul 17, 2008.

  1. C Martin

    C Martin Guest

    How do you setup a Tcl extension to be accessible through Python? I
    understand that I'll have to use native Tcl calls to use it (tk.call()
    etc), but I can't figure out where to put the files or how to
    initialize them so I can call them.

    The package I would like to use is TkPNG: http://www.muonics.com/FreeStuff/TkPNG/

    Thanks.
     
    C Martin, Jul 17, 2008
    #1
    1. Advertisements

  2. You can put them anywhere, but if it is on tcl's auto_path then you
    just need a call to "package require tkpng". To check what directories
    are part of auto_path, start tclsh and enter "set auto_path".

    Follows a sample code to demonstrate how to load the required package:

    import Tkinter

    root = Tkinter.Tk()
    tkpnglib = "/usr/lib/tkpng0.9"
    root.tk.eval("""
    global auto_path
    lappend auto_path {%s}""" % tkpnglib)

    root.tk.eval("package require tkpng")

    If tkpng were installed in some directory belonging to auto_path, then
    you wouldn't need that call to tk.eval.

    And.. for tkpng specifically, you won't need tk.call to use it, you
    just need to create your images using Tkinter.PhotoImage with a "png"
    type.
     
    Guilherme Polo, Jul 17, 2008
    #2
    1. Advertisements

  3. ARGH, Tcl!!! ;-) I know that's not the question, but do you know PIL
    (http://www.pythonware.com/products/pil)?
     
    Thomas Troeger, Jul 18, 2008
    #3
  4. C Martin

    C Martin Guest

    Thank you Guilherme, that's all great info.
    Yes, I know about PIL. However, I need use PNGs with a full alpha
    channel. PIL only seems support simple transparency, whereas TkPNG
    seems to work as expected with them. If I am incorrect in this, then
    please let me know how to use it!

    Thanks.
     
    C Martin, Jul 18, 2008
    #4
    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.