Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Perl/Tk stdin NOT text box, only one part of code

by choroba (Archbishop)
on Jul 01, 2020 at 20:29 UTC ( #11118772=note: print w/replies, xml ) Need Help??


in reply to Perl/Tk stdin NOT text box, only one part of code

When you're typing into the text box, it has focus. Cancel the binding to stop adding tags when the text box gets focus, enable it back when the focus goes somewhere else.
#!/usr/bin/perl use warnings; use strict; use Tk; use Tk::ROText; my $mw = 'MainWindow'->new(-title => 'Tagging'); $mw->Label(-text => 'Here, the tags are being created:')->pack; my $rotext = $mw->ROText->pack; $mw->Label(-text => 'Try typing here, including the letter "s":')->pac +k; my $text = $mw->Text(-width => 20, -height => 3)->pack; $mw->Entry(-text => 'Click here to change focus.', -state => 'readonly +')->pack; my $label = $mw->Label(-textvariable => \ my $l)->pack; my $max = 1000; my ($i, $repeat, $stop); $repeat = $mw->repeat(10, sub { return if $stop; ++$i; $rotext->insert('end', $i, "T$i"); $l = "$i/$max tags added. Press 's' to stop."; $repeat->cancel if $i == $max; }); sub stop { $stop = ! $stop; $l =~ s/stop/start/; } $mw->bind('<s>', \&stop); $text->bind('<FocusIn>', sub { $mw->bind('<s>', "") }); $text->bind('<FocusOut>', sub { $mw->bind('<s>', \&stop) }); MainLoop();

Update: Fixed the problem with "stop" not being updated.

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

Replies are listed 'Best First'.
Re^2: Perl/Tk stdin NOT text box, only one part of code
by cniggeler (Acolyte) on Jul 03, 2020 at 12:58 UTC
    Thank you! Since there are multiple spots for user input (the one I mentioned was just an example), I created a dialog box warning them of a possibly time-consuming operation and letting them skip the step by choosing "Cancel".

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11118772]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (4)
As of 2020-08-10 16:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Which rocket would you take to Mars?










    Results (58 votes). Check out past polls.

    Notices?