Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

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

by choroba (Cardinal)
on Jul 01, 2020 at 20:29 UTC ( [id://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 (Sexton) 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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11118772]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (5)
As of 2024-04-24 07:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found