tkinter制作菜单栏

原文地址

分类目录——tkinter

  • 先看效果

    Menu

    其中黄色部分是一个Label,菜单中的命令选项没点击一下,就能调用写好的函数在这个Label中输出,功能为统计命令被点击的次数

  • 应用实例

    • Menu对象=tk.Menu()

      定义一个菜单条,或横条(顶部的菜单横条),或竖条(点击‘文件’弹出的竖条),或额外的子条(点击某个选项后展开的条),如下图中的三个红色方框框住的,都可以被认为是一个Menu

      Menu
    • Menu对象.add_cascade(子Menu)

      添加一个下级菜单(Menu),用来添加上面生成的一个Menu。如上图,可以为‘文件’添加下面的这个竖框Menu;可以为‘选择编码重新打开’添加右侧的竖框Menu

    • Menu对象.add_command(命令选项, command=函数名)

      在Menu添加一个命令选项,通过command属性指定要执行的函数

    • Menu对象.add_separator()

      在Menu添加一条分割线

    • 关键代码

      # 在窗口上创建一个菜单栏(最上方的菜单栏横条)
      menubar = tk.Menu(window)
      # Valid resource names: activebackground, activeborderwidth,
      # activeforeground, background, bd, bg, borderwidth, cursor,
      # disabledforeground, fg, font, foreground, postcommand, relief,
      # selectcolor, takefocus, tearoff, tearoffcommand, title, type.
      
      # 定义一个竖条
      filemenu = tk.Menu(menubar, tearoff=0)
      
      # 在菜单单元中添加一个菜单项File
      menubar.add_cascade(label='File', menu=filemenu)
      
      # 在File菜单项添加命令选项
      filemenu.add_command(label='New', command=do_job)   # 点击调用do_job
      filemenu.add_command(label='Open', command=do_job)
      filemenu.add_command(label='Save', command=do_job)
      
      # 添加一条分割线
      filemenu.add_separator()
      
      # 定义一个子菜单条
      submenu = tk.Menu(filemenu)  # 和上面定义菜单一样,不过此处是在File上创建一个空的菜单
      submenu.add_command(label="Submenu1", command=do_job)  # 给submenu添加功能选项
      submenu.add_command(label="Submenu2", command=do_job)
      
      # 添加一个展开下拉菜单,并把上面的子菜单嵌入给它
      filemenu.add_cascade(label='Import', menu=submenu, underline=0)
      
      # 同样的在File中加入Exit小菜单,此处对应命令为window.quit
      filemenu.add_command(label='Exit', command=window.quit)
      
      # 在顶部再添加两个菜单项
      viewmenu = tk.Menu(menubar, tearoff=0)
      windowsmenu = tk.Menu(menubar, tearoff=0)
      menubar.add_cascade(label='View', menu=viewmenu)
      menubar.add_cascade(label='Windows', menu=windowsmenu)
      
      # 将菜单配置给窗口
      window.config(menu=menubar)
      
    • 其中的Label

      counter = 0
      def do_job():
          global counter
          l.config(text='do ' + str(counter))
          counter += 1
      
      l = tk.Label(window, bg='yellow', width=20, text='empty')
      l.pack()
      
  • 全部代码

  • 参考文献

    代码主要来自 Menubar 菜单,略有改动

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章