from lcdMenu import lcdMenu from machine import Pin, I2C from PCF8574T import I2C_LCD prev_btn = Pin(13, Pin.IN, Pin.PULL_DOWN) # input of the first btn next_btn = Pin(14, Pin.IN, Pin.PULL_DOWN) # input of the second btn ok_btn = Pin(15, Pin.IN, Pin.PULL_DOWN) # input of switch LCD = I2C_LCD(I2C(0, sda=Pin(8), scl=Pin(9), freq=400000),0x27,2, 16) def first_callback(): print("first_callback() called!") def second_cb(): print("second_cb() called") def third_cb(): print("third_cb() called") return True button_mappings = {"prev_btn":prev_btn, "next_btn": next_btn, "ok_btn": ok_btn} submenu = lcdMenu(LCD, button_mappings, scroll_direction=True, cycle=False, hide_menu_name=False, name="Submenu!") # the submenu.stop callback is a special callback specifically designed for use cases where the lcdMenu ist started with run() # submenu.stop breaks an infinite loop inside the run() method, essentially quitting the run() method and giving back flow to the caller context # so we can utilize this for us to quit a submenu (or a "main" menu if you want to, of course!) submenuItems = [("first item", first_callback), ("second item", second_cb), ("third item", third_cb), ("back", submenu.stop)] submenu.setup(submenuItems) mainmenu = lcdMenu(LCD, button_mappings, scroll_direction=False, cycle=True, hide_menu_name=False, name="Main menu!") mainmenu.setup([("Sub menu",submenu.run)]) mainmenu.run()