Skip to content
Discussion options

You must be logged in to vote

Hi @bmrast,

I'd suggest to track "focus" events on the input elements like this:

def handle_key(e: KeyEventArguments) -> None:
    if e.action.keydown:
        if e.key.arrow_up and focus['index'] > 0:
            container[focus['index']-1].run_method('focus')
        elif e.key.arrow_down and focus['index'] < len(container) - 1:
            container[focus['index']+1].run_method('focus')

with ui.column():
    container = [
        ui.input('A'),
        ui.input('B'),
        ui.input('C'),
    ]

focus = {'index': 0}
for element in container:
    element.on('focus', lambda element=element: focus.update({'index': container.index(element)}))

ui.keyboard(on_key=handle_key, ignore=[])

Replies: 2 comments

Comment options

You must be logged in to vote
0 replies
Answer selected by bmrast
Comment options

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants