lets create a lightbar menu, with some special uses. the following code assumes that you are using my pycrt.py library from here: http://github.com/xqtr/pycrt/ with small changes in the readkey() function, you can easily use the python_bbs library and convert it to a mystic MPY script. our lightbar will have the following features: 1. each item, can be displayed anywhere in the screen. we can put the items next to each other, below, diagonal or even in random places. this way we can have a very interesting menu and not just a "classic" vertical one. 2. each item, can have a low/normal attribute and a highlighted / selected one. to achieve this, we can just use color attributes or pipe codes inside the text description. 3. we will be able to select items, by using cursor keys but also by using hotkeys, for more quick use of the menu. 4. each item will have a code, that it will be returned when the specific item is selected with enter or the hotkey. it's more easy to remember a string code, than index numbers. 5. we can use as many items we want. the only limitation is the size of the screen... :p just to make it easy on ourselves, we use the following function to create an item. each item, is a dictionary, so instead of trying to remember each value for the dictionary fields, we use this function, which is straightforward. def baradditem(x,y,low,high,lowtext,hightext,key,code): return {'x':x,'y':y,'low':low,'high':high,'textlow':lowtext, \ 'texthigh':hightext, 'key':key, 'code':code} to create an item, we just do this: item1 = baradditem(10,10,7,14,'|01[h]|03ello','|17|15[H]ELLO','hH','hello') to hold all items information we just put each item inside a list like this: allitems.append(item1) allitems.append(item2) ... allitems.append(itemx) now lets go to our main function... our function expects the list of the items and if we want we can select the default selected item. by default item index 0, will be selected. remember our list is zero based, which means that if we have 5 items, their index number will be 0,1,2,3,4. def lightbarmenu(items,sel=0): # initialize our result variable res = "" # go into a loop while True: # display the normal/unselected string of each item for i in range(len(items)): writexypipe(items['x'],items['y'],items['low'], \ mcilen(items['textlow']),items['textlow']) # after we displayed all items, we also display the highlighted string # of our selected item. writexypipe(items[sel]['x'],items[sel]['y'],items[sel]['high'], \ mcilen(items[sel]['texthigh']),items[sel]['texthigh']) # expect user input ans = readkey() # if user presses up/left cursor keys, decrease the selection index if ans == "#up" or ans == "#left": sel -= 1 if sel < 0: sel = len(items) - 1 # if user presses down/right cursor keys, increase the selection index elif ans == "#down" or ans == "#right": sel += 1 if sel > len(items) - 1 : sel = 0 # if esc is pressed, exit with an #esc code elif ans == "#esc": res == "#esc" break # if the user pressed enter, return the 'code' value of the selected # item. elif ans == "#enter": res = items[sel]['code'] break # if the user pressed something else, check to see if it's a hotkey. we # check each items hotkey to see if matches the pressed key. if it is # return the item 'code' field. else: for i in range(len(items)): if ans in items['key']: res = items['code'] return res return res that was it!!! simple and short! you can create very cool lightbar menus to use in your bbs or a door game or just a simple local terminal game or script. below is the code for the main function, with no comments to easily copy paste. ,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,./,. def lightbarmenu(items,sel=0): res = "" while True: for i in range(len(items)): writexypipe(items['x'],items['y'],items['low'], \ mcilen(items['textlow']),items['textlow']) writexypipe(items[sel]['x'],items[sel]['y'],items[sel]['high'], \ mcilen(items[sel]['texthigh']),items[sel]['texthigh']) ans = readkey() if ans == "#up" or ans == "#left": sel -= 1 if sel < 0: sel = len(items) - 1 elif ans == "#down" or ans == "#right": sel += 1 if sel > len(items) - 1 : sel = 0 elif ans == "#esc": res == "#esc" break elif ans == "#enter": res = items[sel]['code'] break else: for i in range(len(items)): if ans in items['key']: res = items['code'] return res return res .