PySimpleGUI/DemoPrograms/Demo_Cursor_Changed_To_Hand.py

46 lines
3.3 KiB
Python

import PySimpleGUI as sg
import webbrowser
"""
Demonstration of setting an Element's Widget to use a different cursor than the
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:
window[key].Widget
"""
# Here is a more complete list of cursors you can choose from
cursors = ('X_cursor', 'no', 'arrow','based_arrow_down','based_arrow_up','boat','bogosity','bottom_left_corner','bottom_right_corner','bottom_side','bottom_tee','box_spiral','center_ptr','circle','clock','coffee_mug','cross','cross_reverse','crosshair','diamond_cross','dot','dotbox','double_arrow','draft_large','draft_small','draped_box','exchange','fleur','gobbler','gumby','hand1','hand2','heart','icon','iron_cross','left_ptr','left_side','left_tee','leftbutton','ll_angle','lr_angle','man','middlebutton','mouse','no','pencil','pirate','plus','question_arrow','right_ptr','right_side','right_tee','rightbutton','rtl_logo','sailboat','sb_down_arrow','sb_h_double_arrow','sb_left_arrow','sb_right_arrow','sb_up_arrow','sb_v_double_arrow','shuttle','sizing','spider','spraycan','star','target','tcross','top_left_arrow','top_left_corner','top_right_corner','top_side','top_tee','trek','ul_angle','umbrella','ur_angle','watch','xterm','arrow','center_ptr','crosshair','fleur','ibeam','icon','sb_h_double_arrow','sb_v_double_arrow','watch','xterm','no','starting','size','size_ne_sw','size_ns','size_nw_se','size_we','uparrow','wait','arrow','cross','crosshair','ibeam','plus','watch','xterm')
sg.change_look_and_feel('Light Blue 2')
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('www.PySimpleGUI.org', font=('default 12 underline'), text_color='blue', enable_events=True, key='-LINK-')],
[sg.Text('Try out these additional cursors')],
[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('trek - Beam me up Scotty!', key='-TREK-')],
# [sg.Text('watch -', key='-WATCH-')],
# [sg.Text('watch -', key='-WATCH LEFT-')],
[sg.Button('Exit')] ]
window = sg.Window('Window Title', layout, finalize=True)
# Directly interact with the tkinter widget, changing the cursor shown when placed cursor is over this element
window['-LINK-'].Widget.config(cursor='hand2')
window['-WATCH-'].Widget.config(cursor='watch')
window['-FLEUR-'].Widget.config(cursor='fleur')
window['-TREK-'].Widget.config(cursor='trek')
window['Exit'].Widget.config(cursor='no')
while True: # Event Loop
event, values = window.read()
print(event, values)
if event in (None, 'Exit'):
break
if event == '-LINK-':
# 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
window.close()