在tcl tk中显示鼠标悬停上任何小部件的提示

时间:2016-02-23 11:52:59

标签: tcl tk

是否可以在小部件鼠标悬停时显示小部件提示?

2 个答案:

答案 0 :(得分:1)

当鼠标指针移过它时,每个Tk小部件都会发送一个<Enter>事件,当鼠标指针转到别处时会发送<Leave>事件。

# Make some widgets; the buttons are much larger than the status text
pack [button .b1 -text "First button" -font {Arial 24}]
pack [button .b2 -text "Second button" -font {Arial 24}]
pack [label .l1 -textvariable status -font {Arial 10}]

# Set up some simple bindings
bind .b1 <Enter> {set status "Over the first button"}
bind .b1 <Leave> {set status ""}
bind .b2 <Enter> {set status "Over the second button"}
bind .b2 <Leave> {set status ""}

这是你如何做这类事情的核心。另外需要注意的是,当您单击窗口小部件时,会设置临时抓取,以便将所有(与鼠标相关的)事件发送到该窗口小部件,直到释放鼠标按钮。如果你想弄清楚鼠标结束了什么小部件而你没有直接从事件中得到它,那么winfo containing命令就是正确的工具。

答案 1 :(得分:0)

您可以使用tooltip包,该包应该是Tcl的默认包。

package require tooltip

pack [label .l -text "Hover your mouse over me!"]
tooltip::tooltip .l "I'm a helpful hint!"

参考: