Combobox в tcl выдает ошибку, когда в нем выбран какой-либо элемент
Я использую виджет Combobox, и всякий раз, когда я выбираю любой элемент в нем, он дает
неверное имя команды.top47.not48.fpage2.sw.sf.frame.cf2.frame.c.shell.listb
мой код выглядит так:
ComboBox $mainframe.cf2.frame.c -textvariable variable1 \
-values Corners -modifycmd "new_values"
Это основной комбобокс, который контролирует все значения других комбооксов, присутствующих в нем, которые не дают никаких ошибок, подобных этой.
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