Tkinter (10) 選單部件 Menu

Jason990420發表於2020-07-27

選單部件的建立及其選項

選單中的選項可以是本文, 圖片, 級聯, 核取按鈕 Checkbutton, 或一群的單選按鈕 Radiobutton.

import tkinter as tk
parent = tk.Tk()
menu_widget = tk.Menu(parent, option, ...)
選項 說明
activebackground active 時的背景色
activeborderwidth active 時的邊框寬度, 內定為 1 圖素
activeforeground active 時的前景色
bg or background 背景色
bd or borderwidth 框的寛度, 內定為 1 圖素
cursor 當滑鼠移到部件時,所顯示的滑鼠圖示
disabledforeground disabled 時的前景色
font 文字字型
fg or foreground 前景色
postcommand 每次選單呼叫時, 都呼叫該程式
relief 花邊樣式,內定為 RAISE
selectcolor 被選擇 checkbutton 或 radiobutton 的顏色
tearoff 有無下拉式選單, 第一項是否為下拉元素
tearoffcommand 下拉選單呼叫程式, 兩個引數為原父視窗ID以及新下拉式選單的根視窗ID
title 另設定下拉式選單的視窗標題
  • ‘cascade’ 級聯類選單項
  • ‘checkbutton’ 核取按鈕類選單項
  • ‘command’ 一般命令選單項
  • ‘radiobutton’ 單選按鈕類選單項
  • ‘separator’ 分隔線類選單項
方法 & 說明
add(kind, coption, …)
增加下一個選單選項
add_cascade(coption, …)
同add(‘cascade’, coption, …)
add_checkbutton(coption, …)
同add(‘checkbutton’, coption, …)
add_command(coption, …)
同add(‘command’, coption, …)
add_radiobutton(coption, …)
同add(‘radiobutton’, coption, …)
add_separator()
同add(‘separator’, coption, …)
delete(index1, index2=None)
刪除第index1項(到含第index2項)的選單項
entrycget(index, coption)
返回第index選單項的coption值
entryconfigure(index, coption, …)
設定第index選單項的coption值
index(i)
返回選擇索引的選單項的index
insert_cascade(index, coption, …)
類似add(kind, coption, …), 但為插入方式
insert_checkbutton(index, coption, …)
類似add(kind, coption, …), 但為插入方式
insert_command(index, coption, …)
類似add(kind, coption, …), 但為插入方式
insert_radiobutton(index, coption, …)
類似add(kind, coption, …), 但為插入方式
insert_separator(index)
類似add(kind, coption, …), 但為插入方式
invoke(index)
類似點選該選單項
post(x, y)
選單顯示座標位置 (x, y)
type(index)
返回索引處選單項的型別tk.CASCADE, tk.CHECKBUTTON, tk.COMMAND, tk.RADIOBUTTON, tk.SEPARATOR, or tk.TEAROFF
yposition(n)
返回第n個選單項的對應畫素y位置

選單方法的 coption 選項

選項 說明
accelerator 僅顯示快捷鍵, 如 ‘^X’ 表示 ctrl-X, 實際上必須另外繫結按鍵
activebackground active 時的背景色
activeforeground active 時的前景色
background 背景色
bitmap 點陣圖
columnbreak 選單項是否往右延伸, 內定為否, 以下延伸
command 部件狀態值改變呼叫的程式
compound 圖與文字共用時,圖相對於文字的位置. LEFT/RIGHT/TOP/BOTTOM/CENTER
font 文字字型
foreground 前景色,點陣圖時為顏色值 1 的顏色
hidemargin 是否去掉左右的間距, 內定為否
image 圖片
label 選單項的文字
menu 級聯類選單項
offvalue checkbutton 核取按鈕類選單項的 off 值, 內定為 0
onvalue checkbutton 核取按鈕類選單項的 on 值, 內定為 1
selectcolor 設定checkbutton或者radiobutton的顏色
selectimage 設定顯示不同的圖片和未被選中的狀態相區分
state 狀態 NORMAL 內定 / ACTIVE/DISABLED
underline 設定下底線的位置,內定 -1 為無
value radiobutton選單項的數值
variable checkbutton或者radiobutton的變數

範例視窗及程式碼

Tkinter (10) 選單部件 Menu

import tkinter as tk

root = tk.Tk()
root.wm_title("Menu Demo")
font = ('Courier New', 16, 'bold')

main_menu = tk.Menu(root, font=font)
root.config(menu=menu)

menu_file = tk.Menu(main_menu, font=font, tearoff=0)
main_menu.add_cascade(label='File', font=font, menu=menu_file)
menu_file.add_command(label='New', accelerator='^N')
menu_file.add_command(label='Open', accelerator='^O')
menu_file.add_command(label='Files', accelerator='^F')

menu_edit = tk.Menu(main_menu, font=font, tearoff=0)
main_menu.add_cascade(label='Edit', font=font, menu=menu_edit)
menu_edit.add_command(label='Search', accelerator='^S')
menu_edit.add_command(label='Replace', accelerator='^R')
menu_edit.add_command(label='Copy', accelerator='^C')

menu_help = tk.Menu(main_menu, font=font, tearoff=0)
main_menu.add_cascade(label='Help', font=font, menu=menu_help)
menu_help.add_command(label='About', accelerator='^A')
menu_help.add_command(label='Version', accelerator='^V')
menu_help.add_command(label='Manual', accelerator='^M')

root.mainloop()
本作品採用《CC 協議》,轉載必須註明作者和本文連結

Jason Yang

相關文章