Я пытаюсь разработать GUI с TCL / Tk, потому что это «макроязык» Pointwise, программного обеспечения для генерации сетки.Я нашел сообщение, в котором обсуждается использование процедуры tk_optionMenu
, которая доступна здесь .Проблема в том, что я не понимаю, как вызывать подпрограмму и как получать различные записи в меню параметров.Я хочу выбрать не цифры, а текст для различных процедур.Информация в этой подпрограмме отмечает, что аргументы «> = 1», а не текст.Например, я хочу меню опций, чтобы пользователь мог выбрать, какой метод сглаживания использовать в сетке.В моем графическом интерфейсе, который я настраиваю с форматированием сетки в TCL, у меня есть несколько мест, где я хочу использовать меню параметров.
Используя то, что предложил Гленн Джекман, я попробовал следующее:
#!/usr/bin/wish
# the next line restarts using wish \
#exec wish "$0" "$@"
# interface generated by SpecTcl version 1.2 from /home/hh-eagle/ab/salter/bin/src/GLYPH/PrismEditor/GUI/PE_v01.ui
# root is the parent window for this user interface
package require Tk
proc PE_v01_ui {root args} {
# this treats "." as a special case
if {$root == "."} {
set base ""
} else {
set base $root
}
label $base.solver \
-text {Solver:}
set solvers {TriSmooth QuadSmooth VolSmooth K_lineSmooth}
tk_optionMenu $base.solvers activeSolver {*}$solvers
# Add contents to menus
# $base.solvers.menu add radiobutton -label TriSmooth
# $base.solvers.menu add radiobutton -label QuadSmooth
# $base.solvers.menu add radiobutton -label VolSmooth
# $base.solvers.menu add radiobutton -label K_lineSmooth
# Geometry management
grid $base.solver -in $root -row 2 -column 6
grid $base.solvers -in $root -row 2 -column 7 \
-columnspan 2
# Resize behavior management
# grid rowconfigure $root 1 -weight 0 -minsize 30 -pad 0
# grid rowconfigure $root 2 -weight 0 -minsize 30 -pad 0
# grid rowconfigure $root 3 -weight 0 -minsize 30 -pad 0
# grid rowconfigure $root 4 -weight 0 -minsize 30 -pad 0
# grid rowconfigure $root 5 -weight 0 -minsize 30 -pad 0
# grid rowconfigure $root 6 -weight 0 -minsize 30 -pad 0
# grid rowconfigure $root 7 -weight 0 -minsize 30 -pad 0
# grid rowconfigure $root 8 -weight 0 -minsize 30 -pad 0
# grid rowconfigure $root 9 -weight 0 -minsize 30 -pad 0
# grid columnconfigure $root 1 -weight 0 -minsize 30 -pad 0
# grid columnconfigure $root 2 -weight 0 -minsize 30 -pad 0
# grid columnconfigure $root 3 -weight 0 -minsize 30 -pad 0
# grid columnconfigure $root 4 -weight 0 -minsize 30 -pad 0
# grid columnconfigure $root 5 -weight 0 -minsize 30 -pad 0
# grid columnconfigure $root 6 -weight 0 -minsize 30 -pad 0
# grid columnconfigure $root 7 -weight 0 -minsize 2 -pad 0
# grid columnconfigure $root 8 -weight 0 -minsize 2 -pad 0
# grid columnconfigure $root 9 -weight 0 -minsize 30 -pad 0
# grid columnconfigure $root 10 -weight 0 -minsize 30 -pad 0
# additional interface code
# end additional interface code
}
# Allow interface to be run "stand-alone" for testing
catch {
if [info exists embed_args] {
# we are running in the plugin
PE_v01_ui .
} else {
# we are running in stand-alone mode
if {$argv0 == [info script]} {
wm title . "Testing PE_v01_ui"
PE_v01_ui .
}
}
}
Когда я запускаю это, я получаю пустое поле с опциями вверху, чтобы иконизировать или отклонить его.Раскомментирование или комментирование информации о конфигурации столбца и строки не имеет значения.Заполнение optionMenu с использованием закомментированных строк вместо {*}solvers
также не имело никакого значения.Итак, что-то не так, и я понятия не имею, что.