2015-07-21 23 views
0

Im a using Tcl-Tk 8.6.4 and I am a begginner,I want to create hyperlinks in my texts。 我正在寻找一个程序,该程序可以在参数中包含一个网站的网址,该网址将在我的文本中以蓝色和下划线显示。当然,通过点击网址,它会打开网站。 我发现了下面的代码,但我不确定它会做我想要的。如何在tcl tk中创建超链接?

proc hyperlink { name args } { 
    if { "Underline-Font" ni [ font names ] } { 
    font create Underline-Font {*}[ font actual TkDefaultFont ] 
    font configure Underline-Font -underline true -size 12 
    } 
    if { [ dict exists $args -command ] } { 
    set command [ dict get $args -command ] 
    dict unset args -command 
    } 
    label $name {*}$args -foreground blue -font Underline-Font 
    if { [ info exists command ] } { 
    bind $name <Button-1> $command 
    } 
    return $name 
} 

任何人都可以帮到我吗?

更新2

我想要的东西是在我的窗口一样,要显示的文字超链接:

更多信息给出以下这些链接:

利用第一代码所示我能够显示: enter image description here 使用的代码是:

  • 在一个过程来读取文件我有标签,如HTML标签如

    "<hypLink>" { 
        gets $infile inln 
        hyperlink .hl${counter} -command [list eval exec [auto_execok start] "$inln"] -text "$inln" 
        pack .hl${counter} 
        incr counter 
    } 
    
  • 在我的文件我写

    半导体:

    <hypLink> 
    https://en.wikipedia.org/wiki/Semiconductor 
    <hypLink> 
    http://electronics.howstuffworks.com/diode.htm 
    

我该怎么做才能拥有我想要的东西?

注意第一次更新已delated版权保护

+0

让我知道如果编辑是否正确 – Jerry

回答

0

可以使用proc你找到。如果您有:

hyperlink .hl -command [list puts "clicked"] -text "Click Me" 
pack .hl 

在你的代码,然后单击“超链接”,你会得到的文本clicked到stdout。

如果你要打开的默认浏览器,并转到由超链接指定的网址,你就必须将代码更改为:

hyperlink .hl -command [list eval exec [auto_execok start] "http://www.example.com"] -text "Click Me" 
pack .hl 

您也可以玩的PROC了一下,也许更改字体大小(从-size 12)或更改字体本身。


帖子编辑:

您可以在“超级链接”通过添加下面的开关在dispFile PROC添加到您的代码:

"<hypLink>" { 
    gets $infile inln 
    .fr.txt insert end "$inln" "link lk$lkcount" 
    .fr.txt insert end "\n" Normal 
    .fr.txt tag bind lk$lkcount <1> [list eval exec [auto_execok start] "$inln"] 
    incr lkcount 
} 

这应该创建一个类似于文本文本打开文件,而不是打开文件将打开默认浏览器中的链接。

+0

有了这个解决方案,我不得不把代码中的网址?因为我不想。我需要一个可以使用url调用的“常规”过程。 – PiXieBulles

+0

@PixieBulles好吧,虽然你需要在代码中使用_something_让click处理程序知道去哪里,但它不一定是URL本身。我建议将回调作为一个过程,在那里你可以做任何事情(呃,任何你想要的和有意义的)来确定URL是什么。没有更具体的例子,很难给出更好的建议。 –

+0

我明白你说@Donal。但我正在继续一个由另一个人开始的项目,我必须使用他以前的版本,并添加可能的链接,以便遵循。该程序创建一个窗口,其中有为学生提供的教程和测试(可通过菜单访问)。我想把一些web引用来改进教程的内容。所以,我有几个链接关于在菜单的不同“页面”上显示的几个主题。这就是我想要做的。这是一个满意的例子吗? – PiXieBulles