in reply to How to change a Tk object's property from a thread

Tk already has "threads" :-S try this:
use Tk; my $mw = new MainWindow(); my $button = $mw->Button(-text => "HEY")->pack(); $mw->after(1,\&thread_sub); # after 1 ms, calls thread_sub # it'll run like a thread, but isn't really! # See http://www.foo.be/docs/tpj/issues/vol1_3/tpj0103-0006.html MainLoop(); sub thread_sub { for (my $i=0; $i<10_000_000; $i++) { # DO NOTHING. LET THE TIME BE TIME } # CHANGE BUTTON'S TEXT PROPERTY TO "hey" HERE $button->configure(-foreground=>'red'); }
It's a weird example though... what were you planning on doing? Do you really need threads or would Tk timeslicing do?

Replies are listed 'Best First'.
Re^2: How to change a Tk object's property from a thread
by jimicarlo (Initiate) on Aug 04, 2011 at 20:25 UTC
    This might also be useful: http://www.perlmonks.org/bare/?node_id=732294
      This had exactly what I needed, thank you!
Re^2: How to change a Tk object's property from a thread
by santi_h87 (Novice) on Aug 04, 2011 at 20:27 UTC
    Thanks jimmi! What I want to do is have a udp socket receive packets from another udp socket in a separate thread (otherwise the GUI freezes), and when the socket receives the message "STOP", then it would disable the Disconnect button. Your code works well but it freezes the GUI when the thread is running. Thanks for your answer though!