-1

我正在使用 tk 小部件组合框,每当我选择其中的任何项目时,它都会给出

无效的命令名称 .top47.not48.fpage2.sw.sf.frame.cf2.frame.c.shell.listb

我的代码如下所示:-

ComboBox $mainframe.cf2.frame.c -textvariable variable1 \
        -values Corners -modifycmd "new_values"

这是控制其中存在的其他组合框的所有值的主组合框,它们不会给出任何这样的错误。

4

1 回答 1

1

这很可能是由于您省略的“new_values”函数中的错误。作为显示这一点的示例:

package require BWidget
proc modify {} {.xyzzy something}
ComboBox .c -textvariable v -values Corners -modifycmd modify
pack .c

现在,当您运行它并从下拉列表中选择一个条目时,您会得到“错误:无效的命令名称“.xyzzy””。您尝试解决的窗口显然正在挖掘此 BWidgets 类的内部实现,这winfo children .c向我表明 .c.shell.listb 存在。但是,这是不安全的 - 实现可能会从一个版本更改为下一个版本,并且您无法控制何时创建和销毁下拉列表。winfo exists $combo.shell.listb至少使用检查目标窗口是否存在。您可能还想通过使用来确保 BWidgets 包的兼容版本package require -exact BWidget 1.M.N

于 2011-12-13T11:14:25.707 回答