Demo of binding tkinter events to extend PySimpleGUI

This commit is contained in:
PySimpleGUI 2019-12-18 16:27:59 -05:00
parent 18152ac402
commit 73516abfb1
1 changed files with 35 additions and 0 deletions

View File

@ -0,0 +1,35 @@
import PySimpleGUI as sg
"""
Extending PySimpleGUI using the tkinter event bindings
The idea here is to enable you to receive tkinter "Events" through the normal place you
get your events, the window.read() call.
Both elements and windows have a bind method.
window.bind(tkinter_event_string, key) or element.bind(tkinter_event_string, key_modifier)
First parameter is the tkinter event string. These are things like <FocusIn> <Button-1> <Button-3> <Enter>
Second parameter for windows is an entire key, for elements is something added onto a key. This key or modified key is what is returned when you read the window.
If the key modifier is text and the key is text, then the key returned from the read will be the 2 concatenated together. Otherwise your event will be a tuple containing the key_modifier value you pass in and the key belonging to the element the event happened to.
"""
sg.change_look_and_feel('Dark Blue 3')
layout = [ [sg.Text('Move mouse over me', key='-TEXT-')],
[sg.In(key='-IN-')],
[sg.Button('Right Click Me', key='-BUTTON-'), sg.Button('Exit')] ]
window = sg.Window('Window Title', layout, finalize=True)
window.bind('<FocusOut>', '+FOCUS OUT+')
window['-BUTTON-'].bind('<Button-3>', '+RIGHT CLICK+')
window['-TEXT-'].bind('<Enter>', '+MOUSE OVER+')
window['-TEXT-'].bind('<Leave>', '+MOUSE AWAY+')
window['-IN-'].bind('<FocusIn>', '+INPUT FOCUS+')
while True: # Event Loop
event, values = window.read()
print(event, values)
if event in (None, 'Exit'):
break
window.close()