8.4中的tcl 8.6包

时间:2013-08-08 01:30:17

标签: package tcl

在Tcl / Tk 8.6中有一个称为笔记本的Ttk功能,我想在我的程序中实现。但是,我需要该软件包才能使用此功能。我必须使用8.4,因为我们使用的其中一个dll仅与8.4版兼容(我的沮丧之源)。

我已经下载了Tcl 8.6的源代码并找到了Notebook.tcl。我已经模仿了BWidgets文件夹中的文件夹结构,希望我可以将它导入到程序中但无济于事。关于如何从Tcl 8.6中获取包以正常使用8.4的任何想法?

1 个答案:

答案 0 :(得分:4)

Ttk小部件集首次出现在Tk 8.5中;笔记本小部件从那时起可用。但是,Ttk小部件基于(非常密切基于!)在名为Tile的小部件扩展包上,作者有said

  只要Tcl / Tk 8.4仍然是一个可行的平台,Tile将保持为8.4兼容的扩展。在每个人都升级到8.5之前需要一段时间。

我不是百分百确定你是否可以使用Tile来做你正在做的事情,但是 值得一试!


如果这不起作用,您可能会考虑将程序拆分为两个通过管道进行通信的进程。这很好用; Tcl对管道的处理非常好。这将允许您使用8.5或8.6作为GUI,8.4使用旧扩展名。

如果8.4代码用于创建窗口小部件并且你在Unix / X11上,你甚至可以在包装8.5 / 8.6 GUI的框架中embed 8.4小部件。关键是你设置-container true的框架和你设置-use $id的顶层可以在不同的过程中;只需创建容器框架,使用winfo id获取其ID,并在创建它时将其发送到其他进程,以便创建一个使用该框架作为其容器的顶层。 (使用命令行参数特别有效,因为它允许您控制.顶层的选项。)

set f [frame .foo -container true]
set id [winfo id $f]
set pipeline [open |[list wish8.4 your84script.tcl -use $id] "r+"]

(这就是Tcl / Tk浏览器插件的工作方式。)