Python实现连连看4

2.2.2 添加复合菜单项

复合菜单项即为图4和图5所示的“新游戏”项和“音乐”项,包含了子菜单,当点击该项时,会弹出响应的子菜单。添加复合菜单项时,首先创建该复合菜单的子菜单,接下来将该子菜单与工具栏菜单关联。

(1)创建复合菜单的子菜单

以创建图5所示的“音乐”项为例,该项的子菜单包含了“音乐开”和“音乐关”两项,其代码如下所示。

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)关联子菜单与工具栏菜单

在创建了子菜单之后,通过如下代码将子菜单与工具栏菜单关联。

MENU_MUSIC = '音乐'

menubar.add_cascade(label=MENU_MUSIC, menu=music_menu)

其中,menubar是工具栏菜单,music_menu是子菜单。关联子菜单与工具栏菜单的详细描述请参考《Python中tkinter编程入门7》。

创建“新游戏”项的方法与上述步骤相同。

2.3 关联工具栏菜单与游戏界面

在创建好工具栏菜单之后,需要将其与游戏界面关联,代码如下所示。其中,root是游戏窗口界面,menubar是创建好的工具栏菜单。关联工具栏菜单与游戏界面的详细说明吗,请参考《Python中tkinter编程入门7》。

root.configure(menu=menubar)

2.4 相关代码

为游戏界面添加工具栏菜单的代码如下所示。

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)

相关推荐

  1. Python实现连连4

    2024-06-05 19:36:17       30 阅读
  2. Python实现连连

    2024-06-05 19:36:17       42 阅读
  3. 实验7-2-10 简易连连(PTA)

    2024-06-05 19:36:17       34 阅读
  4. Python 实现连接攻击

    2024-06-05 19:36:17       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-05 19:36:17       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-05 19:36:17       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-05 19:36:17       87 阅读
  4. Python语言-面向对象

    2024-06-05 19:36:17       96 阅读

热门阅读

  1. 【golang】go语言读取Excel表格中的数据

    2024-06-05 19:36:17       26 阅读
  2. Go GORM中的迁移系统,实现自动迁移与手动迁移

    2024-06-05 19:36:17       29 阅读
  3. 深度学习-离线下载链接

    2024-06-05 19:36:17       31 阅读
  4. 什么叫硬编码?如何避免硬编码

    2024-06-05 19:36:17       24 阅读
  5. 字符串逆序数据结构

    2024-06-05 19:36:17       24 阅读
  6. MySQL的一些高频面试题汇总(持续补充)

    2024-06-05 19:36:17       27 阅读
  7. 富格林:掌握正规甄别欺诈信息

    2024-06-05 19:36:17       27 阅读
  8. FFmpeg中视频 Filters 使用文档介绍

    2024-06-05 19:36:17       32 阅读
  9. 汽车电子专栏目录一览

    2024-06-05 19:36:17       20 阅读
  10. stm32和esp32硬件资源上有什么区别

    2024-06-05 19:36:17       26 阅读