Обновление меню MainFrame tk
Я смотрю, как я могу обновить меню своего приложения. я использовал MainFrame
чтобы создать его, но я не могу обновить все меню.
set descmenu1 {}
set FileMenuItems1 {}
lappend FileMenuItems1 [list command "f1" {} "f1" {Ctrl q} -command [list if {[tk_messageBox -message [format "%s ?" "Quit"] -type yesno] eq "yes"} {exit}]]
lappend descmenu1 "&file" all file 0 $FileMenuItems1
set EditMenu {}
lappend EditMenu1 [list command "e1" {} "e1" {Ctrl q} -command [list if {[tk_messageBox -message [format "%s ?" "Quit"] -type yesno] eq "yes"} {exit}]]
lappend descmenu1 "&Edition" all file 0 $EditMenu1
set descmenu2 {}
set FileMenuItems2 {}
lappend FileMenuItems2 [list command "f2" {} "f2" {Ctrl q} -command [list if {[tk_messageBox -message [format "%s ?" "Quit"] -type yesno] eq "yes"} {exit}]]
lappend descmenu2 "&file2" all file 0 $FileMenuItems2
set EditMenu2 {}
lappend EditMenu2 [list command "e2" {} "e2" {Ctrl q} -command [list if {[tk_messageBox -message [format "%s ?" "Quit"] -type yesno] eq "yes"} {exit}]]
lappend descmenu2 "&Edition2" all file 0 $EditMenu2
set mainframe [MainFrame .hull -menu $descmenu1]
.hull configure -menu $descmenu2
Как я могу обновить свое меню, используя MainFrame
? На самом деле, отображаемое меню descmenu1
,
1 ответ
Вы не указали это, но похоже, что вы используете BWidget. -menu
Опция в BFidget MainFrame принимает список, который описывает иерархию меню, а не виджет меню. Тем не менее -configure
опция не переопределяет меню.
Кажется, вы можете заставить его переопределить меню, уничтожив существующее и используя внутренний _create_menubar
процедура для разбора нового списка меню. Однако, возможно, вам стоит подумать об этом как-то иначе, если вам нужно начать использовать внутренние методы. Обычный уровень Tk предоставляет дерево виджетов меню, которым вы можете управлять по своему усмотрению. Возможно, мэйнфрейм BWidget здесь вам не поможет.
демонстрация
package require BWidget
set main [MainFrame .main -menu {
"&File" {} {} 0 {
{command "&New" {} "Create new" {}}
{separator}
{command "E&xit" {} "Exit app" {}}
}
}]
destroy .menubar
$main _create_menubar {
"&Different" {} {} 0 {
{command "Alternate" {} "Something new" {}}
}
}