Combobox в tcl выдает ошибку, когда в нем выбран какой-либо элемент - PullRequest
0 голосов
/ 28 ноября 2011

Я использую виджет tk Combobox и всякий раз, когда я выбираю какой-либо элемент в нем, он дает

invalid command name .top47.not48.fpage2.sw.sf.frame.cf2.frame.c.shell.listb

мой код выглядит так: -

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

Это главный комбинированный список, который управляет всеми значениями других присутствующих в нем списков, которые не дают никакой ошибки, подобной этой.

1 Ответ

1 голос
/ 13 декабря 2011

Это очень вероятно из-за ошибки в функции "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

...