Merge pull request #4486 from PySimpleGUI/Dev-latest

Dev latest
This commit is contained in:
PySimpleGUI 2021-07-02 15:05:08 -04:00 committed by GitHub
commit d0078e66dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 11 deletions

View File

@ -2,11 +2,14 @@ import PySimpleGUI as sg
import webbrowser import webbrowser
""" """
Demonstration of setting an Element's Widget to use a different cursor than the Demo Cursors
standard arrow. In this case, the cursor is changed into a hand when hovering over the Text Element.
This implementation relies on accessing the underlying tkinter widget to change the cursor as there is currently no method provided for you to modify a widget's cursor. Accessing an Element's tkinter widget is easy and straightforward, you simply write: Demonstration of setting an Element's Cursor to use a different cursor than the standard arrow.
window[key].Widget Can also change Cursor at the Window level.
If you want no cursor, set the cursor to the string 'none'.
Copyright 2021 PySimpleGUI
""" """
# Here is a more complete list of cursors you can choose from # Here is a more complete list of cursors you can choose from
@ -16,28 +19,35 @@ sg.theme('Light Blue 2')
layout = [ [sg.Text('Here is a clickable link for you')], layout = [ [sg.Text('Here is a clickable link for you')],
[sg.Text('Notice how the cursor switches to a "hand" when hover over the link')], [sg.Text('Notice how the cursor switches to a "hand" when hover over the link')],
[sg.Text('www.PySimpleGUI.org', font=('default 12 underline'), text_color='blue', enable_events=True, key='-LINK-')], [sg.Text('www.PySimpleGUI.org', font='default 12 underline', text_color='blue', enable_events=True, key='-LINK-')],
[sg.Text('Try out these additional cursors')], [sg.Text('Try out these additional cursors')],
[sg.Text('watch - This makes the spinning-donut-of-death cursor on Windows', key='-WATCH-')], [sg.Text('watch - This makes the spinning-donut-of-death cursor on Windows', key='-WATCH-')],
[sg.Text('fleur - The "Move" cursor', key='-FLEUR-')], [sg.Text('fleur - The "Move" cursor', key='-FLEUR-')],
[sg.Text('trek - Beam me up Scotty!', key='-TREK-')], [sg.Text('trek - Beam me up Scotty!', key='-TREK-')],
[sg.Button('Exit')] ] [sg.Text('none - No cursor at all', key='-NONE-')],
[sg.Text('For touchscreen applications, you may want to turn off the cursor entirely for the windw')],
[sg.Text('Click the Hide Cursor button to turn off at the Window level.')],
[sg.Text('Elements that have specific cursors set will continue to show those cursors')],
[sg.Button('Hide Cursor'), sg.Button('Exit')] ]
window = sg.Window('Window Title', layout, finalize=True) window = sg.Window('Cursor Demo', layout, finalize=True)
# Directly interact with the tkinter widget, changing the cursor shown when placed cursor is over this element # Make sure window is finalized first. Then set the cursor
window['-LINK-'].set_cursor(cursor='hand2') window['-LINK-'].set_cursor(cursor='hand1')
window['-WATCH-'].set_cursor(cursor='watch') window['-WATCH-'].set_cursor(cursor='watch')
window['-FLEUR-'].set_cursor(cursor='fleur') window['-FLEUR-'].set_cursor(cursor='fleur')
window['-TREK-'].set_cursor(cursor='trek') window['-TREK-'].set_cursor(cursor='trek')
window['Exit'].set_cursor(cursor='no') window['Exit'].set_cursor(cursor='no')
window['-NONE-'].set_cursor(cursor='none')
while True: # Event Loop while True: # Event Loop
event, values = window.read() event, values = window.read()
print(event, values) print(event, values)
if event in (sg.WIN_CLOSED, 'Exit'): if event in (sg.WIN_CLOSED, 'Exit'):
break break
if event == '-LINK-': elif event == 'Hide Cursor':
window.set_cursor('none') # special value that hides the cursor entirely
elif event == '-LINK-':
# if the text was clicked, open a browser using the text as the address # if the text was clicked, open a browser using the text as the address
webbrowser.open(window['-LINK-'].DisplayText) # accessing DisplayText isn't something you'll see often webbrowser.open(window['-LINK-'].DisplayText) # accessing DisplayText isn't something you'll see often
window.close() window.close()