# -*- coding: utf-8 -*-
"""
Created on Fri Jun 2 23:11:01 2023
@author: dan-s
"""
"""Em Python, você pode implementar uma estrutura de árvore para representar um menu usando classes e objetos. Aqui está um exemplo de como você pode fazer isso:"""
class MenuItem:
def __init__(self, label, action=None):
self.label = label
self.action = action
self.children = []
def add_child(self, child):
self.children.append(child)
def execute_action(self):
if self.action:
self.action()
else:
print("No action defined for this menu item.")
def __str__(self):
return self.label
class Menu:
def __init__(self, root):
self.root = root
def display(self):
self._display_menu(self.root)
def _display_menu(self, menu_item, indent=""):
print(indent + str(menu_item))
for child in menu_item.children:
self._display_menu(child, indent + " ")
if not indent:
choice = input("Enter your choice: ")
for child in menu_item.children:
if str(child) == choice:
child.execute_action()
break
# Exemplo de uso
# Funções de ação
def action1():
print("Executing action 1...")
def action2():
print("Executing action 2...")
def action3():
print("Executing action 3...")
# Criando os itens de menu
item1 = MenuItem("Item 1", action1)
item2 = MenuItem("Item 2", action2)
item3 = MenuItem("Item 3")
item4 = MenuItem("Item 4", action3)
item5 = MenuItem("Item 5")
# Construindo a estrutura do menu
item3.add_child(item4)
item3.add_child(item5)
item1.add_child(item2)
item1.add_child(item3)
# Criando o menu e exibindo-o
menu = Menu(item1)
menu.display()
menu2 = Menu(item3)
menu2.display()