Chinaunix首页 | 论坛 | 博客
  • 博客访问: 261849
  • 博文数量: 5
  • 博客积分: 2212
  • 博客等级: 大尉
  • 技术积分: 432
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-26 16:00
个人简介

Hello, world!

文章分类

全部博文(5)

文章存档

2015年(5)

我的朋友

分类: IT业界

2015-10-11 22:31:19

通过分离菜单的构造过程,以及菜单与顶层window的绑定,可以灵活地实现不同菜单栏的切换。比如下列代码在打开日记本时创建了一套菜单栏;在关闭日记本菜单执行时,重新绑定了通用菜单栏。

proc gui_diary {topwin} {
    wm title $topwin "我的日记本"
    $topwin configure -menu [gui_diary_menubar ${topwin}.mbar_diary]  ;# 创建日记本的菜单栏
}

proc gui_diary_menubar {mbar} {
    # 若组件已经创建就不再重复创建了
    if {[winfo exists $mbar]} {
 return $mbar
    }

    menu $mbar
   
    $mbar add cascade -label "文件" -menu $mbar.file
    $mbar add cascade -label "视图" -menu $mbar.view
    $mbar add cascade -label "编辑" -menu $mbar.edit
    $mbar add cascade -label "帮助" -menu $mbar.help

    gui_diary_menu_file $mbar.file insert
    gui_diary_menu_view $mbar.view insert
    gui_diary_menu_edit $mbar.edit insert
    gui_diary_menu_help $mbar.help insert

    return $mbar   
}

proc gui_diary_menu_file {mfile action} {
    if {![winfo exists $mfile]} {
 menu $mfile
    }

 $mfile insert 0 command -label "关闭 日记本" -command [list gui_diary_quit $mfile]
    }
}

proc gui_diary_quit {w} {
     set topwin [string range $w 0 [expr {[string first "." $w 1] - 1}]]
    $topwin configure -menu [gui_general_menubar ${topwin}.mbar_general] ;# 重新绑定通用菜单栏
}
阅读(1592) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~