Tkinter updates - Easiest way to install/use Tile?

M

Mudcat

So I haven't programmed much in Python the past couple of years and
have been catching up the last few days by reading the boards. I'll be
making commercial Python applications again and wanted to see what's
new in the Gui department.

I started using Tkinter several years ago and have a lot of stuff
written in it. As a result, it's hard to switch to another interface
(wxPython, PyQt, etc) with all the hours it would take to reproduce
code I will re-use. (I mention this to avoid the inevitable post
asking why I'm still using it). While I was able to produce some nice
applications in the past and am comfortable with the functionality I
was able to achieve I still wanted to find a way to improve the look
since the old look is even more dated now.

I was reading about Tile, and it sounds like I should be able to wrap
a style around my current code to give it a different look. However it
doesn't sound like it's quite ready for prime time yet. I downloaded
the latest stable version of Python 2.5 which apparently still uses
Tcl 8.4. So my options at this point appear to be:

1) Download beta version of Python 2.6 which has Tcl 8.5.
Tile is supposed to be included with Tcl 8.5, but there's not much
information on how to use it with older code. Do I still need wrapper
code, or if I install 2.6 will it be available already.

2) Install Tcl 8.5 to use with Python 2.5.
How do you do this? In other posts it mentions recompiling source tcl
code with Python. If that's the case it doesn't sound like something I
want to mess with. If I stray too far from default configurations I
start to have problems with py2exe.

3) Install Tile with Python 2.5 and Tcl 8.4 and use wrapper code to
make it work.
However all the posts concerning this approach assume that Tile is
already installed. I downloaded the code for the latest version of
Tile which was a .kit extension. This also may need to be compiled,
and if that's the case I again start to have problems with freezing my
application.

What's the easiest way to do this? I really couldn't find a place that
gave instructions for any of the current release configurations. It
sounds if it's available already in Python 2.6 that it would be the
easiest way, but I couldn't find any threads talking about the
availability of it for that release yet.

Thanks
 
E

Eric Brunel

I was reading about Tile, and it sounds like I should be able to wrap
a style around my current code to give it a different look. However it
doesn't sound like it's quite ready for prime time yet. I downloaded
the latest stable version of Python 2.5 which apparently still uses
Tcl 8.4. So my options at this point appear to be:

1) Download beta version of Python 2.6 which has Tcl 8.5.
Tile is supposed to be included with Tcl 8.5, but there's not much
information on how to use it with older code. Do I still need wrapper
code, or if I install 2.6 will it be available already.

Well, if you do it today and look in the Lib/lib-tk directory, you'll see
that there is nothing specific to Tile/ttk in any of the module. So ATM,
new wrappers are needed indeed. If I had to say which wrappers have the
best chance to actually become "official", I'd bet on Guilherme Polo's
ones here:
http://gpolo.ath.cx:81/projects/ttk_to_tkinter/
These seem to be the most complete, and somebody's actually working on
them.
2) Install Tcl 8.5 to use with Python 2.5.
How do you do this? In other posts it mentions recompiling source tcl
code with Python. If that's the case it doesn't sound like something I
want to mess with. If I stray too far from default configurations I
start to have problems with py2exe.

I guess it would probably be better to at least recompile the _tkinter.c
module to get the new tcl/tk header files. I think I also read somewhere
that there were API incompatibilities between tcl/tk 8.4 and 8.5. Don't
know if it has any impact on Tkinter.
3) Install Tile with Python 2.5 and Tcl 8.4 and use wrapper code to
make it work.
However all the posts concerning this approach assume that Tile is
already installed. I downloaded the code for the latest version of
Tile which was a .kit extension. This also may need to be compiled,
and if that's the case I again start to have problems with freezing my
application.

This doesn't look like the way to go for me: you'll add the burden of
having to install the Tile package at tcl/tk level while not gaining
anything, since you'll still have to use wrappers that may or may not be
official in the end.
What's the easiest way to do this? I really couldn't find a place that
gave instructions for any of the current release configurations. It
sounds if it's available already in Python 2.6 that it would be the
easiest way, but I couldn't find any threads talking about the
availability of it for that release yet.

As I said above, if I had to choose today, I'd go Python 2.6 + tcl/tk 8.5
+ Guilherme Polo's ttk wrappers.

But if you can do it, I'd say: just wait. Things are moving fast: the
latest Python 2.6 beta release is less than a month old, and Guilherme
Polo has marked his ttk wrappers project as complete only 3 days ago. So
maybe the next Python beta will actually include them... And BTW, the
final release for Python 2.6 is planned at the beginning of October, so
this is not that far away.

HTH
 
F

Fredrik Lundh

Eric said:
As I said above, if I had to choose today, I'd go Python 2.6 + tcl/tk
8.5 + Guilherme Polo's ttk wrappers.

And putting on my GSoC hat, I'd agree.

I'll probably prepare a "ttk patch kit" for Python 2.5 when things
settle down a bit (unless someone beats me to it), but if you want
something asap, 2.6 + ttk is what you want.

(the OP mentioned py2exe, so I'm assuming Windows here. building a
custom _tkinter for 2.5 with Tcl/Tk 8.5 on a Unixoid system is pretty
straightforward.)

</F>
 
G

Guilherme Polo

So I haven't programmed much in Python the past couple of years and
have been catching up the last few days by reading the boards. I'll be
making commercial Python applications again and wanted to see what's
new in the Gui department.

I started using Tkinter several years ago and have a lot of stuff
written in it. As a result, it's hard to switch to another interface
(wxPython, PyQt, etc) with all the hours it would take to reproduce
code I will re-use. (I mention this to avoid the inevitable post
asking why I'm still using it). While I was able to produce some nice
applications in the past and am comfortable with the functionality I
was able to achieve I still wanted to find a way to improve the look
since the old look is even more dated now.

I was reading about Tile, and it sounds like I should be able to wrap
a style around my current code to give it a different look. However it
doesn't sound like it's quite ready for prime time yet. I downloaded
the latest stable version of Python 2.5 which apparently still uses
Tcl 8.4. So my options at this point appear to be:

1) Download beta version of Python 2.6 which has Tcl 8.5.
Tile is supposed to be included with Tcl 8.5, but there's not much
information on how to use it with older code. Do I still need wrapper
code, or if I install 2.6 will it be available already.

2) Install Tcl 8.5 to use with Python 2.5.
How do you do this? In other posts it mentions recompiling source tcl
code with Python. If that's the case it doesn't sound like something I
want to mess with. If I stray too far from default configurations I
start to have problems with py2exe.

3) Install Tile with Python 2.5 and Tcl 8.4 and use wrapper code to
make it work.
However all the posts concerning this approach assume that Tile is
already installed. I downloaded the code for the latest version of
Tile which was a .kit extension. This also may need to be compiled,
and if that's the case I again start to have problems with freezing my
application.

The other points were answered already, so let me give some more
insight on this last one.

For Windows there is a .zip you can download (following the links at
http://tktable.sourceforge.net/tile/) which requires no installation,
just unpacking. For Linux there is a package named tk-tile in Ubuntu.

In case you are using Windows, just unpacking the .zip doesn't
guarantee that Tk will find the tile package (unless you unpack at
whatever places Tk looks by default). If Tk doesn't find it, you need
to set the TILE_LIBRARY environment variable to whatever place tile
was unzipped to. I'm assuming you will be using the previously
mentioned ttk wrapper, which will look at TILE_LIBRARY, if necessary,
to load tile.
 
G

Guilherme Polo

The other points were answered already, so let me give some more
insight on this last one.

For Windows there is a .zip you can download (following the links at
http://tktable.sourceforge.net/tile/) which requires no installation,
just unpacking. For Linux there is a package named tk-tile in Ubuntu.

In case you are using Windows, just unpacking the .zip doesn't
guarantee that Tk will find the tile package (unless you unpack at
whatever places Tk looks by default). If Tk doesn't find it, you need
to set the TILE_LIBRARY environment variable to whatever place tile
was unzipped to. I'm assuming you will be using the previously
mentioned ttk wrapper, which will look at TILE_LIBRARY, if necessary,
to load tile.

I have put this and some other info at
http://tkinter.unpythonic.net/wiki/tk85_and_python now.
 
M

Mudcat

Thanks for all the input! I was able to install 2.6 with the wrapper
file and get up and running quickly.

I like this. I can pass the style object to a separate stylesheet file
where I can create all the definitions. That cleans up a lot of
clutter around the gui widgets. In the past there just didn't seem to
be a good way to create clean code when it came to Tkinter guis
because of all the definitions with each widget creation. Now most of
that can be offloaded somewhere else.
 

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

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top