On Jun 17, 2008, at 11:42, Laurence Anthony wrote:
Does anybody know how to prevent the Tkx (Tcl/Tk) error report dialogs popping up in the GUI (without using eval throughout the code)? In Perl/Tk, things just die quietly. In Tkx, the error dialog tells the user exactly on which line the bug is. This is great for debugging, but creates a poor user experience.
You define the Tcl 'bgerror' function in the if you want to override this. The Tkx API does not provide a direct way to do this if you want the bgerror command to be a perl function, so this example shows a possible workaround:
#!perl -w use strict; use warnings; use Tkx; Tkx::button(".b", -text => "Hello, world", -command => sub { Tkx::foo(); }, # XXX will fail ); Tkx::pack(".b"); Tkx::set("perl_bgerror", sub { splice(@_, 0, 3); # skip internal callback junk my $msg = shift; print "Error: $msg\n"; }); Tkx::eval(<<'EOT'); proc bgerror {msg} { global perl_bgerror $perl_bgerror $msg } EOT Tkx::MainLoop() __END__ Regards, Gisle