Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
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
Replies are listed 'Best First'.
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 having an uproarious good time at the Monastery: (12)
As of 2015-07-07 19:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls