Beefy Boxes and Bandwidth Generously Provided by pair Networks Bob
Syntactic Confectionery Delight
 
PerlMonks  

Re: Using Tk::ProgressBar

by neosamuri (Friar)
on Oct 28, 2005 at 02:13 UTC ( [id://503566]=note: print w/replies, xml ) Need Help??

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


in reply to Using Tk::ProgressBar

I beleive that you will need to use threads to allow the ProgressBar to be displayed with the main loop while doing the work that your application needs to do.

UPDATE: Just realized that you would need threads::shared in order for this method to work.

I am sure that there are better ways of doing this, but I am not sure what

Replies are listed 'Best First'.
Re^2: Using Tk::ProgressBar
by Courage (Parson) on Oct 28, 2005 at 06:25 UTC
    using threads for GUI for Tk is very wrong. Achieve nothing, and will render program unstable.
    Yet, threads in perl are unusable.
      Threads and Tk,are NOT wrong, but they have to be done with alot of care. You cannot mix Tk code across threads, and all threads must be created before any Tk code is invoked in the main thread. See Tk-with-worker-threads or this simple example:
      #!/usr/bin/perl use strict; use threads qw[ async ]; use threads::shared; our $WORKMAX ||= 1_000; #by BrowserUk ## A shared var to communicate progess between work thread and TK my $progress : shared = 0; sub work { for my $item ( 0 .. $WORKMAX ) { { lock $progress; $progress = ( $item / $WORKMAX ) * 100; } select undef, undef, undef, 0.001; ## do stuff that takes t +ime } } threads->new( \&work )->detach; ## For lowest memory consumption require (not use) ## Tk::* after you've started the work thread. require Tk::ProgressBar; my $mw = MainWindow->new; my $pb = $mw->ProgressBar()->pack(); my $repeat; $repeat = $mw->repeat( 100 => sub { print $progress; $repeat->cancel if $progress == 100; $pb->value($progress); } ); $mw->MainLoop;

      I'm not really a human, but I play one on earth. flash japh

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://503566]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.