in reply to Perl TK
Tk is still active, it just dosn't change much. :-)
What you are looking for is Tk's hypertext. See Insert something like a hyperlink in a Tk Text widget for a few basic examples.
To launch the web browser when clicking on a hypertext link, use the code below in the callback. You need to fork it off to avoid blocking the event loop.
If you don't want to use HyperText, you can put the callback into a Button widget.#!/usr/bin/perl use warnings; use strict; my $linkurl = 'http://google.com'; #my $linkurl = 'linux-tips.html'; #my $file = 'links_from_HTML.html'; #my $command = "firefox $file"; # if(fork() == 0){ exec ($command) } #works #system( $command ); #external url my $command = "firefox $linkurl"; if(fork() == 0){ exec ($command) }
You can also do it very nicely on a canvas, the canvas allows you much flexibility. The following example could be enhanced, to have Enter and Leave bindings on the weblink tag, and to maybe change the cursor to a hand or pointer when over the links.
#!/usr/bin/perl use Tk; use strict; my $w=20; my $x=0; my $y=0; my %nums = ( 0 => ['black','yellow'], 1 => ['yellow','black'], 2 => ['white','green'], 3 => ['green','white'], 4 => ['grey','red'], 5 => ['red','grey'], 6 => ['blue','white'], 7 => ['white','blue'], 8 => ['orange','grey45'], 9 => ['grey45','orange'], ); my $mw=tkinit; my $c = $mw->Canvas(-bg=>'white')->pack; for (0..9) { my $item=$c->createRectangle($x,$y,$x+20,$y+20, -fill=> ${$nums{$_}}[0], -tags => ['weblink'] ); my $text = $c->createText($x+10,$y+10, -anchor=>'center', -fill => ${$nums{$_}}[1], -text => $_, -tags => ['weblink'] ); $x+=20; } my $text1 = $c->createText(100,100, -anchor=>'center', -fill => 'black', -font => 24, -text => 'http://google.com', -tags => ['weblink'] ); $c->bind('weblink', '<ButtonPress-1>', sub { print "launch your url\n"; my $linkurl = "http://google.com"; my $command = "firefox $linkurl"; if(fork() == 0){ exec ($command) } } ); $mw->Button( -text => "Exit", -command =>sub{ exit }, )->pack; MainLoop;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Perl TK
by randor (Novice) on Sep 24, 2012 at 14:08 UTC | |
by marto (Cardinal) on Sep 24, 2012 at 14:23 UTC | |
by randor (Novice) on Sep 24, 2012 at 15:20 UTC | |
by zentara (Cardinal) on Sep 24, 2012 at 17:47 UTC | |
by randor (Novice) on Sep 25, 2012 at 12:39 UTC |