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 菜單,略有改動

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