61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
import PySimpleGUI as sg
|
|
|
|
|
|
"""
|
|
Demo - Navigating a window's focus using arrow keys
|
|
|
|
This Demo Program has 2 features of PySimpleGUI in use:
|
|
1. Binding the arrow keys
|
|
2. Navigating a window's elements using focus
|
|
|
|
The first step is to bind the left, right and down arrows to an event.
|
|
The call to window.bind will cause events to be generated when these keys are pressed
|
|
|
|
The next step is to add the focus navigation to your event loop.
|
|
When the right key is pressed, the focus moves to the element that should get focus next
|
|
When the left arrow key is pressed, the focus moves to the previous element
|
|
And when the down arrow is pressed the program exits
|
|
|
|
|
|
Copyright 2022 PySimpleGUI
|
|
"""
|
|
|
|
|
|
|
|
def main():
|
|
layout = [ [sg.Text('My Window')],
|
|
[sg.Input(key='-IN-')],
|
|
[sg.Input(key='-IN2-')],
|
|
[sg.Input(key='-IN3-')],
|
|
[sg.Input(key='-IN4-')],
|
|
[sg.Input(key='-IN5-')],
|
|
[sg.Input(key='-IN6-')],
|
|
[sg.Input(key='-IN7-')],
|
|
[sg.Button('Go'), sg.Button('Exit')]]
|
|
|
|
window = sg.Window('Window Title', layout, finalize=True)
|
|
|
|
# Bind the Left, Right and Down arrow keys to events
|
|
window.bind('<Right>', '-NEXT-')
|
|
window.bind('<Left>', '-PREV-')
|
|
window.bind('<Down>', 'Exit')
|
|
|
|
while True: # Event Loop
|
|
event, values = window.read()
|
|
print(event, values)
|
|
if event == sg.WIN_CLOSED or event == 'Exit':
|
|
break
|
|
# Right arrow pressed, so move to the next element that should get focus
|
|
if event == '-NEXT-':
|
|
next_element = window.find_element_with_focus().get_next_focus()
|
|
next_element.set_focus()
|
|
|
|
# Left arrow pressed, so move to the previous element that should get focus
|
|
if event == '-PREV-':
|
|
prev_element = window.find_element_with_focus().get_previous_focus()
|
|
prev_element.set_focus()
|
|
window.close()
|
|
|
|
if __name__ == '__main__':
|
|
main()
|