gyn

Win32下的Perl,无用的select,停滞的Tk,结束吧....

浅析TclTk中的tooltip

tagtip.PNG

最近一直在写一个文件传阅系统,其中涉及到一个包含显示文件状态的text的notebook。虽然和本文无关,但还是要说一下的是,text最好指定一个height,不然在fill和expand之后,会在notebook中占据显示空间,我在这里用到的数值是7。还有的是,在布局notebook时可以考虑使用panedwindow,它可以缩放组件占据面积的大小。

言归正传,tooltip是用来为比如像工具栏中的按钮提供动态提示的组件。查看源代码,我们可以看到,被bind的Tooltip不是具体关于tooltip本身的,通过bindtag它被添加到需要被显示信息的组件的事件处理队列中。一旦比如Enter或者Leave事件发生,将运行tooltip中相应的函数。

具体用于显示信息的路径名为.__tooltip__的toplevel中只有一个label,有时候我们需要增加一些显示信息,比如图片之类的时候,就显得很不够。我们可以通过在.__tooltip__中增加一个canvas或者text来实现。对于原存在的label,我建议最多做一些configure,将其的anchor、bd、bg分别设为w、0、#ffffff,它便如个title一样,不会对显示效果产生太大影响。

但是还是存在一些局限,例如同时存在需要显示原状和增加了现实效果这两种tip时,上面的这种办法就无能为力了,因为.__tooltip__是被共享的,修改就意味着所有需要显示tip的组件都将为此使用新的风格。所以,可以确定的是,我们需要有两种显示状态。解决的办法按照深度可分为三种:第一种,在原先的.__tooltip__中针对不同的组件来withdrawn新增的效果,这需要做出一些判断,甚至在构造函数中增加一个选项;第二,在tooltip的hash变量G中除了TOPLEVEL之外,再增加一个例如TOPLEVEL_2这样的key值,也就是说再造一个专门用于显示特殊效果的组件,当然判断还是需要的;第三种也是最简单的一种,重建一个用来显示特殊效果tip的package,说起来好像很难,其实只是替换tooltip和Tooltip这两个关键词即可。

posted on 2008-11-11 16:48 gyn_tadao 阅读(637) 评论(3)  编辑 收藏 引用 所属分类: TclTk

评论

# re: 浅析TclTk中的tooltip 2008-11-16 05:39 u88

具体用于显示信息的路径名为.__tooltip__的toplevel中只有一个label  回复  更多评论   

# re: 浅析TclTk中的tooltip 2008-11-18 21:18 gyn

具体用于显示信息的,路径名为.__tooltip__的toplevel,其中只有一个label   回复  更多评论   

# re: 浅析TclTk中的tooltip 2009-12-25 18:53 007

很牛。。。。。。。。。。。。  回复  更多评论   

只有注册用户登录后才能发表评论。
<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

常用链接

留言簿(15)

随笔分类(126)

随笔档案(108)

相册

搜索

最新评论

阅读排行榜

评论排行榜