gyn

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

Tk最新实现dateentry(取代iwidgets::dateentry)

最近一直在研究Tcl/Tk,而且有点乐不思蜀了,这里的“蜀”说的是Perl,因为一直用Perl的缘故,现在倒是有点冷落它了。介绍一下最近实现的一个dateentry,其实借鉴了很多iwidgets::dateentry的思路,但是由于该package年代久远,现在看来却是有点惨不忍睹,所以不得不重新写一个。

cal2.PNG

以上就是最终的控件样式,因为比较喜欢苹果的风格,所以总体上以白色为主,比较清新。代码的实现上,主要是解决一下几个问题。

首先,如何布局,因为使用canvas的缘故,所有的内部组件必须使用x、y坐标的形式放置,如此一来就不得不小心地控制所有组件的位置。

第二,其中的日期按钮都是复用的,也就是说某个月中产生的日期按钮在下一个月份更新时并不会被注销,而是改变了text。这么一来解决了组件路径冲突的问题,而8.6中将可能可以使用%来自动生成随机数。

第三,日历的显示,使用了overrideredirect来隐藏了toplevel的边框。使用geometry,并根据dateentry的label位置,来定位日历,使其能够紧贴控件显示。

第四,点击除日历外的任意位置,都会注销日历。这么作完全是为了符合windows使用的习惯,当然这样也很方便。需要使用“grub -global $toplevel”将事件的捕获限定在当前显示的日历中,然后通过判定鼠标位置是否在日历内,来决定是否该注销日历。

这是一个示例,并没有打包,使用的时候,直接运行即可,但需要安装tcltk解析器。如需应用到具体程序中可电邮我,独家发布,欢迎使用。

download


posted on 2008-10-30 13:34 gyn_tadao 阅读(1385) 评论(6)  编辑 收藏 引用 所属分类: TclTk

评论

# re: Tk最新实现dateentry(取代iwidgets::dateentry) 2008-10-31 20:20 金山毒霸2008

的确非常漂亮,看着就和windows的样式不同,可有说不出来是哪里  回复  更多评论   

# re: Tk最新实现dateentry(取代iwidgets::dateentry) 2008-11-20 00:28 123

我执行的时候为什么老出错呢...
can.t fin d package img:::::::::::::png while exectuing  回复  更多评论   

# re: Tk最新实现dateentry(取代iwidgets::dateentry) 2008-11-24 10:01 gyn_tadao

安装那个包即可  回复  更多评论   

# re: Tk最新实现dateentry(取代iwidgets::dateentry) 2008-11-28 14:19 123

不是呀,tcltk解析器我安装了呀,用的是activetcl  回复  更多评论   

# re: Tk最新实现dateentry(取代iwidgets::dateentry) 2008-11-30 09:50 gyn

请看清,是安装“那个包”,不是安装tcltk。说的再清楚一点就是img,更清楚一点就是"teacup install img"。  回复  更多评论   

# re: Tk最新实现dateentry(取代iwidgets::dateentry) 2008-12-03 16:58 123

呵呵,谢谢~ 晚上回去试下  回复  更多评论   

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

导航

统计

常用链接

留言簿(15)

随笔分类(126)

随笔档案(108)

相册

搜索

最新评论

阅读排行榜

评论排行榜