处理TCL中的长菜单

时间:2012-12-04 16:33:17

标签: menu tcl tk

我有一个旧的TCL应用程序,其菜单没有显示所有条目。

如何创建多列菜单或滚动菜单以便可以看到所有菜单条目?

这是TCL v8.0

这是一个gui。

我正在看的代码片段是:

#
# Setup the folder Menu
#
menubutton $w.folder -text Folder -menu $w.folder.menu
menu $w.folder.menu -tearoff 0
$w.folder.menu add command -label "New"      -command createNewFolder -state disabled
$w.folder.menu add command -label "Open"     -command openFolder 
$w.folder.menu add command -label "Delete"   -command deleteFolder -state disabled
$w.folder.menu add command -label "Printer Setup" -command selectPrinter -state  disabled
$w.folder.menu add command -label "Quit"     -command xqmQuit 
$w.folder.menu add separator
foreach queue $privateGlobals(folderList) {
   $w.folder.menu add command -label "$queue" -command [list openFolder "$queue"]
}

正在发生的事情是,在foreach循环中有很多条目被创建,但我只能看到60或80中的46个。

我很长一段时间没有做过TCL,但我没有在菜单小部件中看到任何明显的选项来做我想做的事。

1 个答案:

答案 0 :(得分:2)

您可以使用-columnbreak value选项。

set i 0
foreach queue $privateGlobals(folderList) {
   $w.folder.menu add command -label "$queue" -command [list openFolder "$queue"] -columnbreak [expr $i % 10 == 0]
   incr i
}