Python实现连连看4

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)
相关推荐
nenchoumi31192 分钟前
AirSim/Cosys-AirSim 游戏开发(一)XBox 手柄 Windows + python 连接与读取
windows·python·xbox
GoodStudyAndDayDayUp2 分钟前
初入 python Django 框架总结
数据库·python·django
星辰大海的精灵10 分钟前
基于Dify+MCP实现通过微信发送天气信息给好友
人工智能·后端·python
精灵vector15 分钟前
Agent短期记忆的几种持久化存储方式
人工智能·python
北京_宏哥30 分钟前
🔥Python零基础从入门到精通详细教程4-数据类型的转换- 上篇
前端·python·面试
乾巫宇宙国监察特使41 分钟前
Python的设计模式
python·测试
Hockor1 小时前
写给前端的 Python 教程四(列表/元组)
前端·后端·python
这里有鱼汤1 小时前
熟练掌握MACD这8种形态,让你少走三年弯路(附Python量化代码)| 建议收藏
后端·python
404.Not Found1 小时前
Day46 Python打卡训练营
开发语言·python
love530love1 小时前
【PyCharm必会基础】正确移除解释器及虚拟环境(以 Poetry 为例 )
开发语言·ide·windows·笔记·python·pycharm