Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^3: Tk hidden binding

by zentara (Archbishop)
on Jul 24, 2011 at 11:12 UTC ( #916391=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Tk hidden binding
in thread Tk hidden binding

I would think that your newline is replaced by \x{13} in my Tk version. But why should a newline be printed anyway?

This brings up a good point, what do YOU expect to happen when you press a <control s> in the TextUndo widget? The normal behavior, on my Tk ( version Tk-804.029_500 ) , with no extra bindings associated with it, is to print what appears to be an underscore line segment, not a newline. It is not a dash or hyphen. Repeated presses of <control s> create a continuous line looking like an underscore (at the bottom of the font area).

Do you want this behaviour?

If you want to stop all text insertion, with a <control s>, try this and see what happens. I get NO insertion of any kind into the TextUndo widget. Notice I'm getting the REAL widget, not the Scrolled one.

#!/usr/bin/perl use warnings; use strict; use Tk; require Tk::TextUndo; # a <control s> in the TextUndo widget produces # nothing in the Text area, and a foo to the console my $mw = tkinit; # create a top bar for testing pure $mw focus my $button = $mw->Button(-text=>'test')->pack(); $mw->bind('<Control-s>', sub { print "main control s \n" }); my $t = $mw->Scrolled ('TextUndo')->pack; my $t1 = $t->Subwidget("scrolled"); # get real widget $t1->bind('<Control-s>', sub { print "\t\tfoo\n"; $_[0]->break }); $t1->bindtags([($t1->bindtags)[1,0,2,3]]); MainLoop;

To address the point that you saw no difference in binding to a Scrolled or standard TextUndo widget, notice the difference in behavior in this script, where I bind to the Scrolled widget. I get the foo to the console, plus the underscore line gets printed to the TextUndo.

#!/usr/bin/perl use warnings; use strict; use Tk; require Tk::TextUndo; # when binding to the Scrolled widget, instead # of the real widget, a line gets printed to the text area # as well as the foo to the console my $mw = tkinit; # create a top bar for testing pure $mw focus my $button = $mw->Button(-text=>'test')->pack(); $mw->bind('<Control-s>', sub { print "main control s \n" }); my $t1 = $mw->Scrolled ('TextUndo')->pack; $t1->bind('<Control-s>', sub { print "\t\tfoo\n"; $_[0]->break }); $t1->bindtags([($t1->bindtags)[1,0,2,3]]); MainLoop;

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


Comment on Re^3: Tk hidden binding
Select or Download Code
Re^4: Tk hidden binding
by emilbarton (Scribe) on Jul 24, 2011 at 12:56 UTC

    This is it. I still have to study your bindtags line to understand the syntax but the main point is that I can consider the problem solved and use your Subwidget trick from now on. Thank you again.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (11)
As of 2014-08-23 14:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (174 votes), past polls