GUI:-please answer want to learn GUI programming in python , how should i proceed.
Kevin Walzer
kw at codebykevin.com
Mon Dec 16 09:55:20 EST 2013
On 12/15/13, 5:06 PM, Chris Angelico wrote:
> Yeah, but there's a difference between passing your GUI incantations
> on to a library function (written in C but now just part of a binary
> library) and feeding them to a completely different language
> interpreter. When I write something with PyGTK, I can't, even in
> theory, give it arbitrary C code to execute. From what I understand
> here, that *is* true of Tcl, which means that the Python download
> contains a Python interpreter and a Tcl interpreter. I'm not saying
> that's a bad thing to do, but it is calculated to provoke remark.
Yes, a Tkinter app has both a Python interpreter and an underlying Tcl
interpreter. Let's be clear about that.
The technical reason for this is that, during Python's early
development, Tk was the simplest, most powerful and OSS-friendly GUI
toolkit out there (compared to, let's say, Motif). Its reliance on Tcl
was a plus because Tcl's C API is exceptionally clean and easy to
embed/call from other C libraries (that was Tcl's original main focus,
embedding in C).
Embedding the Tcl interpreter remains a sound decision today. It makes
it trivial to keep Tkinter updated in sync with Tk updates, since the
Tcl interpreter does most of the heavy lifting. The recent effort to
wrap Tk's new themed widgets is a good one: nearly all of the work was
done at the Python level. Compare this approach to Perl's original one,
which stripped out Tcl and implemented Tk integration entirely in C. Any
updates require heavy lifting in C and, in fact, Perl/Tk has not kept up
with Tk's main line of development (it does not run natively on the Mac,
for instance).
Calling through Tkinter to Tcl also provides some other conveniences. If
you're writing a Tkinter app and want to access some platform-specific
functionality that requires C calls, that may require a library
extension written against Tcl/Tk's C API (i.e. the Mac's NSServices
API--that can't be accessed using ctypes because it hooks into the
window server). Fortunately, Tk is very easy to extend in C--much
simpler than extending wxWidgets or Qt.
Finally, Tcl is itself a fully-featured, general programming language
that is a peer to Python both generationally and in terms of its
capabilities; the main way it lags is in the size of its development
community. In other words, you are not handing the ball off to a
90-pound weakling if you need to call into Tcl from Python via Tkinter. ;-)
--Kevin
--
Kevin Walzer
Code by Kevin/Mobile Code by Kevin
http://www.codebykevin.com
http://www.wtmobilesoftware.com
More information about the Python-list
mailing list