2.2.2 添加复合菜单项
复合菜单项即为图4和图5所示的"新游戏"项和"音乐"项,包含了子菜单,当点击该项时,会弹出响应的子菜单。添加复合菜单项时,首先创建该复合菜单的子菜单,接下来将该子菜单与工具栏菜单关联。
(1)创建复合菜单的子菜单
以创建图5所示的"音乐"项为例,该项的子菜单包含了"音乐开"和"音乐关"两项,其代码如下所示。
python
MENU_MUSIC_ON = '音乐开'
MENU_MUSIC_OFF = '音乐关'
music_menu = tkinter.Menu(menubar, tearoff=0, bg=MENU_BGCOL, fg=MENU_FGCOL)
music_menu.add_command(label=MENU_MUSIC_ON, command=music_on)
music_menu.add_command(label=MENU_MUSIC_OFF, command=music_off)
其中,music_menu即为创建的子菜单,通过add_command()方法将"音乐开"和"音乐关"两项添加到子菜单中,当玩家点击了"音乐开"时,会调用自定义函数music_on;当玩家点击了"音乐关"时,会调用自定义函数music_off。创建子菜单项的详细描述请参考《Python中tkinter编程入门7》。
(2)关联子菜单与工具栏菜单
在创建了子菜单之后,通过如下代码将子菜单与工具栏菜单关联。
python
MENU_MUSIC = '音乐'
menubar.add_cascade(label=MENU_MUSIC, menu=music_menu)
其中,menubar是工具栏菜单,music_menu是子菜单。关联子菜单与工具栏菜单的详细描述请参考《Python中tkinter编程入门7》。
创建"新游戏"项的方法与上述步骤相同。
2.3 关联工具栏菜单与游戏界面
在创建好工具栏菜单之后,需要将其与游戏界面关联,代码如下所示。其中,root是游戏窗口界面,menubar是创建好的工具栏菜单。关联工具栏菜单与游戏界面的详细说明吗,请参考《Python中tkinter编程入门7》。
python
root.configure(menu=menubar)
2.4 相关代码
为游戏界面添加工具栏菜单的代码如下所示。
python
MENU_BGCOL = 'lightgrey'
MENU_FGCOL = 'black'
MENU_NEWGAME = '新游戏'
MENU_NEWGAME_START = '开始游戏'
MENU_MUSIC = '音乐'
MENU_MUSIC_ON = '音乐开'
MENU_MUSIC_OFF = '音乐关'
MUSIC_FILE = 'res/1.mp3'
MENU_HINT = '提示'
def file_new():
pass
def music_on():
pass
def music_off():
pass
def hint():
pass
menubar = tkinter.Menu(root, bg=MENU_BGCOL, fg=MENU_FGCOL)
file_menu = tkinter.Menu(menubar, tearoff=0, bg=MENU_BGCOL, fg=MENU_FGCOL)
file_menu.add_command(label=MENU_NEWGAME_START, command=file_new)
menubar.add_cascade(label=MENU_NEWGAME, menu=file_menu)
music_menu = tkinter.Menu(menubar, tearoff=0, bg=MENU_BGCOL, fg=MENU_FGCOL)
music_menu.add_command(label=MENU_MUSIC_ON, command=music_on)
music_menu.add_command(label=MENU_MUSIC_OFF, command=music_off)
menubar.add_cascade(label=MENU_MUSIC, menu=music_menu)
menubar.add_command(label=MENU_HINT, command=hint)
root.configure(menu=menubar)