By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
458,221 Members | 1,054 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 458,221 IT Pros & Developers. It's quick & easy.

tkinter, sockets and threads together

P: n/a
hello,

i read that it is bad to use threads with tkinter. so my question is
how does one create a gui program with sockets? at one point you have
to call mainloop() which does not return. then you are not free to do
stuff with the sockets.

what's up with that?

thanks so much for your time!
julia
Jul 18 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
ju************@hotmail.com (Julia Goolia) writes:
i read that it is bad to use threads with tkinter. so my question is
how does one create a gui program with sockets? at one point you have
to call mainloop() which does not return. then you are not free to do
stuff with the sockets.

what's up with that?


On Unix, you can use Tk file handlers for sockets, i.e. have Tcl
select(2) not only on the connection to the X11 server (which is a
socket itself), but also select on your sockets. This is readily
supported in _tkinter.

On Windows, you have no choice but to use threads. If the socket
processing threads have no relationship to the Tk thread, everything
is fine. However, in many cases, interaction of some kind is
needed. In this case, it is ok to call Tk methods from other threads,
as long as they translate to "fast" commands, i.e. commands that only
modify state, but don't block - you should not run the mainloop in
multiple threads.

Regards,
Martin

Jul 18 '05 #2

P: n/a
In article <79**************************@posting.google.com >,
ju************@hotmail.com (Julia Goolia) wrote:
hello,

i read that it is bad to use threads with tkinter. so my question is
how does one create a gui program with sockets? at one point you have
to call mainloop() which does not return. then you are not free to do
stuff with the sockets.

what's up with that?


For reading from a socket you can use file events. See Tkinter Summary
at my site <http://www.astro.washington.edu/owen/> for the basics.

To avoid blocking while writing (i.e.queue up the output data and write
it as the network permits), I ended up using threads. There are probably
other options.

The package "RO Util", available at th web site mentioned above includes
a simple class RO.Comm.TkSocket that handles input and output nicely,
while hiding the details of file events and the writing thread.

You could also use the Twisted Framework. It is reportedly well done and
integrate nicely with Tkinter and other frameworks. I can't speak from
personal experience as I've not yet tried it.

-- Russell
Jul 18 '05 #3

P: n/a
> i read that it is bad to use threads with tkinter. so my question is
how does one create a gui program with sockets? at one point you have
to call mainloop() which does not return. then you are not free to do
stuff with the sockets.


Take a look at
http://www.python.org/doc/faq/gui.ht...ndled-while-wa
iting-for-i-o
RT

Jul 18 '05 #4

P: n/a
"Julia Goolia" <ju************@hotmail.com> wrote in message
news:79**************************@posting.google.c om...
hello,

i read that it is bad to use threads with tkinter. so my question is
how does one create a gui program with sockets? at one point you have
to call mainloop() which does not return. then you are not free to do
stuff with the sockets.

what's up with that?

thanks so much for your time!


Well, one page worth reading would be Jacob HallÚn's

http://aspn.activestate.com/ASPN/Coo...n/Recipe/82965

recipe, which IIRC is pretty general.

regards
--
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/pwp/


Jul 18 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.