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

Другие вопросы по тегам