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)
相关推荐
小途软件19 小时前
高校宿舍访客预约管理平台开发
java·人工智能·pytorch·python·深度学习·语言模型
-dcr19 小时前
49.python自动化
运维·python·自动化
code bean20 小时前
Flask图片服务在不同网络接口下的路径解析问题及解决方案
后端·python·flask
Chasing Aurora20 小时前
Python后端开发之旅(三)
开发语言·python·langchain·protobuf
于越海21 小时前
材料电子理论核心四个基本模型的python编程学习
开发语言·笔记·python·学习·学习方法
中年程序员一枚21 小时前
Springboot报错Template not found For name “java/lang/Object_toString.sql
java·spring boot·python
AI Echoes1 天前
LangChain 非分割类型的文档转换器使用技巧
人工智能·python·langchain·prompt·agent
程序之巅1 天前
VS code 远程python代码debug
android·java·python
__如风__1 天前
onlyoffice文档转换服务离线部署
python
今晚务必早点睡1 天前
写一个Python接口:发送支付成功短信
开发语言·python