Wrong question. Correct question: How do you notify Tk's thread that a property should be changed?
You could poll a Thread::Queue.
use strict; use warnings; use threads; use Thread::Queue qw( ); use Time::HiRes qw( sleep ); use Tk qw( MainLoop ); my $q = Thread::Queue->new(); my $mw = MainWindow->new(); my $text = $mw->Entry(-width => 8)->pack(); $mw->repeat(100, sub { while (defined(my $command = $q->dequeue_nb())) { $text->delete('0.0', "end"); $text->insert('0.0', $command); $mw->update(); } }); # Some worker. async { for (;;) { sleep(0.2 + 1.5 * rand()); $q->enqueue(chr(ord('A') + rand(26))); } }->detach(); MainLoop();
In reply to Re: How to change a Tk object's property from a thread
by ikegami
in thread How to change a Tk object's property from a thread
by santi_h87
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |