问题标签 [itcl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
119 浏览

tcl - tcl/Itcl 错误:错误 # args:应该是“itcl::class name { definition }”

我目前正在学习 Itcl 语言(基于 tcl 语言),并编写了以下脚本。
该脚本正在实现一个驱动程序,该驱动程序应该获取 4 个参数并将它们存储在类实例的私有变量中

当我尝试运行它时,出现以下错误:

谁能帮助我并告诉我我做错了什么,我得到了这个错误?

0 投票
2 回答
342 浏览

tcl - tcl/itcl - 带有两个参数的 args 输入列表上的 foreach 迭代

我编写了以下代码,应该在我的 args 输入列表上进行迭代,每次迭代都读取两个参数。问题是它不像我写的那样工作。我查看了 Tcl/Tk Wikipedia 网页,但找不到任何有用的建议。我可以按照我写的方式(不将其转换为数组)吗?

0 投票
1 回答
100 浏览

data-structures - TCL/ITCL - 使用现有数据结构实现独特的数据结构

我是 tcl/Itcl 编程的新手。
tcl 或 Itcl 中是否有任何数据结构或为这两者提供的任何包可以帮助我实现下一个结构(见下图)。

数据结构说明:
该数据结构与B-Tree数据结构非常相似。
但是,数据结构的每一级都是不同的类,这意味着类 A 只能有类型B 的子级。
任何级别(节点)中的每个“类类型”除了“指针”之外,还有另一个对该类唯一的数据给这个“节点”的父母和孩子。

我看到有 struct::tree 数据结构,但我真的不知道我是否可以使用这个数据结构来实现我的数据结构,但有这些例外。
除了创建一个“节点基类”和另外 3 个继承自该“节点基类”的类之外,还有什么方法可以实现它,每个类都有唯一的列表?

在此处输入图像描述

0 投票
1 回答
408 浏览

tcl - 防止替换输入字符串中的特殊字符

如何在不使用“/”字符的情况下从用户那里获取带有特殊字符的输入并将其视为字符串?
例如:
假设有一个proc a {input} {...}获取以下字符串的过程"classA.arr2[0].classB"
如果我没有在“[0]”旁边添加字符“/”,它会认为 0 是一个命令/过程。

我会更清楚地说明:
我添加了一个代码,它是Class A评估参数的方法的一部分。

现在我想运行以下代码:

0 投票
1 回答
79 浏览

class - 如何将方法的返回值视为类类型 - Itcl

假设我在 Itcl 中实现了以下代码。

现在,我收到以下错误:
执行“$obj Print”时命令名称“0”无效

我知道我需要向我的变量或 Print 命令添加范围,以便调用与 A 类关联的 Print 方法。但我真的不知道如何。

我还阅读了以下帖子:

如何获取 Itcl 类成员变量的引用?

但它并没有说明如何将返回值视为特定的类类型变量

0 投票
1 回答
188 浏览

package - 从 tcl/itcl 源列表在 tcl 中创建一个包

我想做一个 tcl 包,我正在写在 tcl 和 itcl 中。

现在,我的第一个问题是我有几个源文件包含在另一个文件中,所以我添加了source应该在它们之间包含的命令。如果我使用命令创建一个包,package provide这仍然有效吗?

我的第二个问题是我真的不知道如何创建这个包。我在上面的模块脚本中添加了 command package provide pack 1.0,但我知道 auto_path 也应该更新,并且 mk_index 文件中应该包含源。我在互联网上搜索,找不到很好的例子。

顺便说一句,我在源文件的全局命名空间下创建了所有类和过程,可以吗?还是应该将它们包装在新的命名空间中?

0 投票
1 回答
193 浏览

api - 在 tcl 包过程中调用 TCL C API

我正在为我的程序使用 TCL-C API。
我阅读并创建了类似于这个C++ 示例的测试程序。
但我对这个例子有疑问。当我在 shell 中使用这个示例时(通过使用 load example.o 加载它),每个输入都会自动调用 API 的解释器并运行与输入字符串相关的命令。
但是假设我希望输入将调用我需要的包内的 tcl 过程,该过程将检查参数并打印另一条消息,并且只有在此之后才会调用 TCL-C API 相关函数(一种包装器),在这种情况下,我该怎么做?
我在某处读到该符号@是应该用于调用外部程序的符号,但我找不到它在哪里。
我将举一个小例子让事情更清楚。

somepackage.tcl

测试.tcl

0 投票
1 回答
175 浏览

api - 如何在 C++ 对象和 itcl 对象之间链接

我正在使用 C++ 代码扩展我的 Itcl 程序,但遇到了以下问题。

我想使用 TCL-C API 将我的 Itcl 代码中的“引用”返回到我的 C++ 代码中的一个对象,返回值应该注册到我的 Itcl 代码中的一个对象,因此在此之后我可以调用它的方法。我的问题是我真的不知道如何从双方做到这一点。

我看到使用 TCL_LINKVAR(...) API 函数,我可以在这个对象之间创建一个链接到 TCL 中的一个字符串,但我真的不明白如何使用这个 TCL_LINKVAR 函数来处理对象而不是原始类型,例如整数,双精度等...

我将举一个小例子:这是我的 C++ 代码:

Tcl-C API 代码

代码

0 投票
1 回答
44 浏览

tcl - ITCL:如何显示条目中的值?

在我的代码中,该条目无法显示该值。如何纠正它?谢谢

0 投票
2 回答
78 浏览

tcl - 是否有可能在第一次打开 ttk::combobox 之前获取其弹出列表的内容?

我创建了一个仅显示组合框的蒙版。我想将某些元素涂成红色。

由于几个原因,我必须持有一个给定的结构,所以我需要三个文件。第一个创建顶层,第二个创建掩码,还有填充组合框的方法。第三个文件包括创建和处理组合框的所有方法。

所以这是第一个文件

(vmHelmert2.tcl):

这是第二个文件

(vmMaskHelmert2.itcl)

这是组合框的最后一个文件

(vmCombobox2.itcl):

在方法中vmCombobox2::itemconfigure我把popDownList. IfpopDownListopened第一次,内容是空的,没有一个元素是红色的(

内容弹出列表

. 我得到了错误

项目编号“-1”超出范围

(当然,popDownList 是空的)。如果我第二次打开它,元素 2 和 3 会按预期显示为红色。

有没有办法在第一次打开之前将内容填充到弹出列表中?