469,268 Members | 1,023 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,268 developers. It's quick & easy.

tkinter, sockets and threads together

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
4 7041
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
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
> 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
"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.

Similar topics

2 posts views Thread by Tero Saarni | last post: by
5 posts views Thread by george.trojan | last post: by
reply views Thread by Rod Stephenson | last post: by
12 posts views Thread by Tonino | last post: by
2 posts views Thread by Stressed Out Developer | last post: by
14 posts views Thread by Hendrik van Rooyen | last post: by
2 posts views Thread by Kevin Walzer | last post: by
2 posts views Thread by Kevin Walzer | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by suresh191 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.