在 Tcl/Tk 8.6 中有一个称为笔记本的 Ttk 功能,我想将其实现到我的程序中。但是,我需要该包才能利用此功能。我必须使用 8.4,因为我们使用的 dll 之一仅与 8.4 版本兼容(我感到沮丧的根源)。
我已经下载了 Tcl 8.6 的源代码并找到了 Notebook.tcl。我模仿了 BWidgets 文件夹中的文件夹结构,希望能够将其导入到程序中,但没有成功。关于如何从 Tcl 8.6 获取包以便在 8.4 上正常工作有什么想法吗?
Ttk 小部件集首次出现在 Tk 8.5 中;从那时起,笔记本小部件就可用了。然而,Ttk 小部件是基于 (very紧密地基于!)在一个名为的小部件扩展包上Tile http://tktable.sourceforge.net/tile/作者对此有said http://wiki.tcl.tk/11075:
只要 Tcl/Tk 8.4 仍然是一个可行的平台,Tile 将作为 8.4 兼容的扩展进行维护。大家还需要一段时间才能升级到8.5。
我不能 100% 确定您是否可以使用 Tile 来完成您正在做的事情,但它有got值得一试!
如果这不起作用,您可能会考虑将程序分成两个通过管道进行通信的进程。这很有效; Tcl对管道的处理还是不错的。这样您就可以对 GUI 使用 8.5 或 8.6,对旧扩展使用 8.4。
如果 8.4 代码用于创建小部件并且您使用的是 Unix/X11,您甚至可以embed http://wiki.tcl.tk/10887包装 8.5/8.6 GUI 框架中的 8.4 小部件。关键是你设置的框架-container true
on 和您设置的顶层-use $id
on 可以位于不同的进程中;只需制作容器框架,即可获取其 IDwinfo id
,并在创建它时将其发送到另一个进程,以便它可以创建一个使用该框架作为其容器的顶层。 (使用命令行参数效果特别好,因为它可以让您控制.
顶层。)
set f [frame .foo -container true]
set id [winfo id $f]
set pipeline [open |[list wish8.4 your84script.tcl -use $id] "r+"]
(This was how the Tcl/Tk browser plugin worked.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)