Yet another GUI toolkit question...

K

Kevin Walzer

....with a twist.

I'm undertaking my first semi-substantial Python GUI application after a
long time dabbling with the language.

I'm fairly experienced with Tcl/Tk, so Tkinter seems the obvious choice
to reduce my Python learning curve. However, my Tcl applications
typically make use of a *lot* of extensions to the core widget set, such
as BWidgets, tablelist, and Tile.

I've found minimal Tkinter wrappers for all of these extensions, but
they are all labelled "experimental," lightly documented at best, and
little-used (as far as I can tell) by Python developers.

So: my question is, would it be more productive for me to wrestle with
these extensions when there doesn't seem to be much constituency for
their use, or would it be better/faster/more efficient for me to start
scaling the wxPython mountain?

For what it's worth, my application has to run on OS X and Windows, and
will be commercial, so this combination of requirements rules out
PyGTK/PyQt/just about every other cross-platform GUI toolkit.

Advice, especially from those Tkinter devs who look beyond the core
widget set for their apps, is appreciated!
 
D

Dan Sommers

For what it's worth, my application has to run on OS X and Windows,
and will be commercial, so this combination of requirements rules out
PyGTK/PyQt/just about every other cross-platform GUI toolkit.

According to their respective web sites, both Qt and PyQt have
commercial licenses, and both run on both OS X and Windows. Is there
another reason you cannot use them? Usually the concern is the other
way around, that the Qt and PyQt licenses aren't sufficiently free or
Free.

Disclaimer: I have no financial or business ties to Trolltech or to
Riverbank.

Regards,
Dan
 
K

Kevin Walzer

Dan said:
According to their respective web sites, both Qt and PyQt have
commercial licenses, and both run on both OS X and Windows. Is there
another reason you cannot use them? Usually the concern is the other
way around, that the Qt and PyQt licenses aren't sufficiently free or
Free.

Disclaimer: I have no financial or business ties to Trolltech or to
Riverbank.

Regards,
Dan

Commercial Qt is a little out of my price range.
 
F

Florian Nykrin

Hi Kevin!

I have no experience with Tkinter, but I did some small GUIs with
wxPython and PyGTK.

wxPython works very well on Windows, but on Linux (Ubuntu/Debian in my
case) it is very difficult to work with and buggy.
PyGTK-Applications on the other hand maybe do not look totally like
Windows-Apps, but they work equally good on both systems (and have
native look when working with Gnome).

I would take a look at PyGTK in combination with Glade, which is what I use.

Regards, Florian.
 
C

Chris Mellon

...with a twist.

I'm undertaking my first semi-substantial Python GUI application after a
long time dabbling with the language.

I'm fairly experienced with Tcl/Tk, so Tkinter seems the obvious choice
to reduce my Python learning curve. However, my Tcl applications
typically make use of a *lot* of extensions to the core widget set, such
as BWidgets, tablelist, and Tile.

I've found minimal Tkinter wrappers for all of these extensions, but
they are all labelled "experimental," lightly documented at best, and
little-used (as far as I can tell) by Python developers.

So: my question is, would it be more productive for me to wrestle with
these extensions when there doesn't seem to be much constituency for
their use, or would it be better/faster/more efficient for me to start
scaling the wxPython mountain?

For what it's worth, my application has to run on OS X and Windows, and
will be commercial, so this combination of requirements rules out
PyGTK/PyQt/just about every other cross-platform GUI toolkit.

If you're planning on selling an application, especially to OS X
users, then Tk is absolutely out of the question. It doesn't have even
the slightest resemblence to native behavior, and lacks the polish and
flash that occasionally lets a non-native app get away with it. Given
the limits you've stated, I believe your only options are wxPython and
writting 2 guis using PyWin/PyObjC. The second option requires
knowledge of the native tool sets for the respective platforms, so if
you don't have that I can only suggest wxPython. If you're used to Tk
you will face a learning curve, and you will need to look for or write
replacements for the custom widgets you've been using.
 
G

Grant Edwards

wxPython works very well on Windows, but on Linux (Ubuntu/Debian in my
case) it is very difficult to work with and buggy.

That's odd. I've been using wxPython for many years on both
Windows and on many distributions and haven't found a bug yet.
I admit that wxWidgets doesn't have the most elegent API in the
world...
 
K

Kevin Walzer

Florian said:
Hi Kevin!

I have no experience with Tkinter, but I did some small GUIs with
wxPython and PyGTK.

wxPython works very well on Windows, but on Linux (Ubuntu/Debian in my
case) it is very difficult to work with and buggy.
PyGTK-Applications on the other hand maybe do not look totally like
Windows-Apps, but they work equally good on both systems (and have
native look when working with Gnome).

I would take a look at PyGTK in combination with Glade, which is what I
use.

Regards, Florian.
Unfortunately, PyGTK does not run natively on the Mac (it's X11 only).
 
P

Peter Decker

I'm undertaking my first semi-substantial Python GUI application after a
long time dabbling with the language.
....
So: my question is, would it be more productive for me to wrestle with
these extensions when there doesn't seem to be much constituency for
their use, or would it be better/faster/more efficient for me to start
scaling the wxPython mountain?

If you're going cross-platform, then wxPython is the toolkit to use.
It looks and works correctly on all platforms.

I worked with wxPython for a couple of years, and constantly struggled
with the ugle, C++ style syntax, and then discovered Dabo. Dabo is a
full 3-tier application framework, and its UI tier wraps wxPython. So
while you're using wxPython when you use dabo.ui, you're writing
clean, Pythonic code. I found that after playing around with Dabo for
a little bit, I could write apps that worked without constantly going
to the docs to look up some obscure constant or event name. The
authors are also extremely helpful, so if write your app using Dabo,
I'm sure that you'll have tons of support.

http://dabodev.com
 
R

Robert Hicks

Wow you are so wrong about Tk on OSX. Soon this is just not going to be
the case at all for any of the system Tcl/Tk runs on. The Tcl folks
have come out with a package called "Tile" that is going to be rolled
in. It gives you native L&F on OSX, Windows, Linux.

Robert
 
S

Steve Holden

Robert said:
Wow you are so wrong about Tk on OSX. Soon this is just not going to be
the case at all for any of the system Tcl/Tk runs on. The Tcl folks
have come out with a package called "Tile" that is going to be rolled
in. It gives you native L&F on OSX, Windows, Linux.
This is good news if it happens, but right now it's just another dose of
"real soon now".

regards
Steve
 
K

Kevin Walzer

Chris said:
If you're planning on selling an application, especially to OS X
users, then Tk is absolutely out of the question. It doesn't have even
the slightest resemblence to native behavior, and lacks the polish and
flash that occasionally lets a non-native app get away with it. Given
the limits you've stated, I believe your only options are wxPython and
writting 2 guis using PyWin/PyObjC. The second option requires
knowledge of the native tool sets for the respective platforms, so if
you don't have that I can only suggest wxPython. If you're used to Tk
you will face a learning curve, and you will need to look for or write
replacements for the custom widgets you've been using.

Do these screenshots look "non-native" to you?

http://www.wordtech-software.com/ireveal-mac.png
http://www.wordtech-software.com/ireveal-windows.png
http://www.wordtech-software.com/ireveal-linux.png

This application was developed in Tcl/Tk.

I think Tkinter is lagging behind Tk itself in terms of its advances
with theming and native look and feel, especially on OS X and Win XP.
Certainly a lot of Python developers don't seem well-informed about the
work that has been done to bring Tk back into the modern age. The
wrappers I mentioned above (some at a site that is offline but should be
back online shortly, I'm told) are bleeding-edge in Tkinter terms but
reflect work that started a couple of years ago in Tk. (The extension is
called "Tile" and will be part of the Tk core when it's released at v. 8.5).

That doesn't mean wxPython is out of the question. What I'm trying to
figure out is whether I will be up and running faster with Tkinter +
Tile (leaving me mainly to improve my proficiency with Python itself and
translate Tk into a Python idiom) or whether I should learn wxPython,
with its vastly different GUI paradigm, as well as Python.

If Tkinter + Tile + Bwidgets + Tablelist does the job, as I think it may
(and as it does with regular Tcl/Tk), then I will probably stick with
that. And perhaps I can then contribute some documentation somewhere on
how to use the Tile widgets in a Tkinter application, complete with
screen shots and working code for others to use. Such documentation is
sorely lacking right now.

The vast range of available GUI toolkits is one thing that partially
offsets Python's many virtues as a programming language. I realize I was
stepping into a fire swamp by even broaching the question. However, the
application I'm envisioning (accessing web services from a desktop GUI)
will benefit from the abundant Python libraries/wrappers that have
already been written, which are mostly lacking (or which would require
me to roll my own) in Tcl.
 
K

Kevin Walzer

Chris said:
If you're planning on selling an application, especially to OS X
users, then Tk is absolutely out of the question. It doesn't have even
the slightest resemblence to native behavior, and lacks the polish and
flash that occasionally lets a non-native app get away with it. Given
the limits you've stated, I believe your only options are wxPython and
writting 2 guis using PyWin/PyObjC. The second option requires
knowledge of the native tool sets for the respective platforms, so if
you don't have that I can only suggest wxPython. If you're used to Tk
you will face a learning curve, and you will need to look for or write
replacements for the custom widgets you've been using.

Do these screenshots look "non-native" to you?

http://www.wordtech-software.com/ireveal-mac.png
http://www.wordtech-software.com/ireveal-windows.png
http://www.wordtech-software.com/ireveal-linux.png

This application was developed in Tcl/Tk.

I think Tkinter is lagging behind Tk itself in terms of its advances
with theming and native look and feel, especially on OS X and Win XP.
Certainly a lot of Python developers don't seem well-informed about the
work that has been done to bring Tk back into the modern age. The
wrappers I mentioned above (some at a site that is offline but should be
back online shortly, I'm told) are bleeding-edge in Tkinter terms but
reflect work that started a couple of years ago in Tk. (The extension is
called "Tile" and will be part of the Tk core when it's released at v. 8.5).

That doesn't mean wxPython is out of the question. What I'm trying to
figure out is whether I will be up and running faster with Tkinter +
Tile (leaving me mainly to improve my proficiency with Python itself and
translate Tk into a Python idiom) or whether I should learn wxPython,
with its vastly different GUI paradigm, as well as Python.

If Tkinter + Tile + Bwidgets + Tablelist does the job, as I think it may
(and as it does with regular Tcl/Tk), then I will probably stick with
that. And perhaps I can then contribute some documentation somewhere on
how to use the Tile widgets in a Tkinter application, complete with
screen shots and working code for others to use. Such documentation is
sorely lacking right now.

The vast range of available GUI toolkits is one thing that partially
offsets Python's many virtues as a programming language. I realize I was
stepping into a fire swamp by even broaching the question. However, the
application I'm envisioning (accessing web services from a desktop GUI)
will benefit from the abundant Python libraries/wrappers that have
already been written, which are mostly lacking (or which would require
me to roll my own) in Tcl.
 
K

Kevin Walzer

Peter said:
If you're going cross-platform, then wxPython is the toolkit to use.
It looks and works correctly on all platforms.

I worked with wxPython for a couple of years, and constantly struggled
with the ugle, C++ style syntax, and then discovered Dabo. Dabo is a
full 3-tier application framework, and its UI tier wraps wxPython. So
while you're using wxPython when you use dabo.ui, you're writing
clean, Pythonic code. I found that after playing around with Dabo for
a little bit, I could write apps that worked without constantly going
to the docs to look up some obscure constant or event name. The
authors are also extremely helpful, so if write your app using Dabo,
I'm sure that you'll have tons of support.

http://dabodev.com

Dabo looks interesting, but isn't it mainly for database applications?
Has any other kind of application been developed with it? Also, it seems
very Windows/Linux-centric. Is anyone using it on OS X?
 
K

Kevin Walzer

Peter said:
If you're going cross-platform, then wxPython is the toolkit to use.
It looks and works correctly on all platforms.

I worked with wxPython for a couple of years, and constantly struggled
with the ugle, C++ style syntax, and then discovered Dabo. Dabo is a
full 3-tier application framework, and its UI tier wraps wxPython. So
while you're using wxPython when you use dabo.ui, you're writing
clean, Pythonic code. I found that after playing around with Dabo for
a little bit, I could write apps that worked without constantly going
to the docs to look up some obscure constant or event name. The
authors are also extremely helpful, so if write your app using Dabo,
I'm sure that you'll have tons of support.

http://dabodev.com

Dabo looks interesting, but isn't it mainly for database applications?
Has any other kind of application been developed with it? Also, it seems
very Windows/Linux-centric. Is anyone using it on OS X?
 

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,982
Messages
2,570,186
Members
46,742
Latest member
AshliMayer

Latest Threads

Top