Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Perl TK

by zentara (Archbishop)
on Sep 21, 2012 at 17:35 UTC ( #994956=note: print w/ replies, xml ) Need Help??


in reply to Perl TK

I know Tk is no longer active but I do like its easability.

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.

#!/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) }
If you don't want to use HyperText, you can put the callback into a Button widget.

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;

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


Comment on Re: Perl TK
Select or Download Code
Re^2: Perl TK
by randor (Novice) on Sep 24, 2012 at 14:08 UTC
    Thank you but I tried your code by copy and pasting it so I could play with it and I got an error saying "firefox is not a recognizable command"

    any Ideas?

      Well, you could install firefox or use a sensible method to launch the default browser with the URL. For Windows:

      start http://www.perlmonks.org

      For Linux:

      xdg-open http://www.perlmonks.org

      And so on.

        Yes, Thank you.. not very smart on my part, after I posted I realized that I did not have firefox installed on this system.

        I did get it to open a page, however, it caused a new problem.

        It opens a browser window but then I get an error saying "Perl command line interpreter has stopped working" and it closes out my program.

        below is the call that I make (please note that I set this code just to test it working so please bare with the hardcoding of the link and such)

        $tmp_label = $table->Button(-image => $D_Image, -borderwidth=>0, -cur +sor=>'hand1', -command=>[\&NewOrders]); sub NewOrders { $pid = fork(); if ($pid == 0) { execute(system "start http://www.yahoo.com"); exit(0) +;} }
        Anyone know why it is crashing out my perl? I believe I have it forked properly??

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (2)
As of 2015-07-05 02:41 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 (60 votes), past polls