Demo program for use with psgtray
This commit is contained in:
parent
cbb2be3a65
commit
8d2b7ee30a
|
@ -0,0 +1,79 @@
|
|||
import PySimpleGUI as sg
|
||||
from psgtray import SystemTray
|
||||
|
||||
|
||||
"""
|
||||
A System Tray Icon courtesy of pystray and your friends at PySimpleGUI
|
||||
|
||||
Import the SystemTray object with this line of code:
|
||||
from psgtray import SystemTray
|
||||
|
||||
Key for the system tray icon is:
|
||||
tray = SystemTray()
|
||||
tray.key
|
||||
|
||||
values[key] contains the menu item chosen.
|
||||
|
||||
One trick employed here is to change the window's event to be the event from the System Tray.
|
||||
|
||||
|
||||
Copyright PySimpleGUI 2021
|
||||
"""
|
||||
|
||||
def main():
|
||||
|
||||
menu = ['', ['Show Window', 'Hide Window', '---', '!Disabled Item', 'Change Icon', ['Happy', 'Sad', 'Plain'], 'Exit']]
|
||||
tooltip = 'Tooltip'
|
||||
|
||||
layout = [[sg.Text('My PySimpleGUI Celebration Window - X will minimize to tray')],
|
||||
[sg.T('Double clip icon to restore or right click and choose Show Window')],
|
||||
[sg.T('Icon Tooltip:'), sg.Input(tooltip, key='-IN-', s=(20,1)), sg.B('Change Tooltip')],
|
||||
[sg.Multiline(size=(60,10), reroute_stdout=False, reroute_cprint=True, write_only=True, key='-OUT-')],
|
||||
[sg.Button('Go'), sg.B('Hide Icon'), sg.B('Show Icon'), sg.B('Hide Window'), sg.Button('Exit')]]
|
||||
|
||||
window = sg.Window('Window Title', layout, finalize=True, enable_close_attempted_event=True)
|
||||
|
||||
|
||||
tray = SystemTray(menu, single_click_events=False, window=window, tooltip=tooltip, icon=sg.DEFAULT_BASE64_ICON)
|
||||
tray.show_message('System Tray', 'System Tray Icon Started!')
|
||||
sg.cprint(sg.get_versions())
|
||||
while True:
|
||||
event, values = window.read()
|
||||
|
||||
# IMPORTANT step. It's not required, but convenient. Set event to value from tray
|
||||
# if it's a tray event, change the event variable to be whatever the tray sent
|
||||
if event == tray.key:
|
||||
sg.cprint(f'System Tray Event = ', values[event], c='white on red')
|
||||
event = values[event] # use the System Tray's event as if was from the window
|
||||
|
||||
if event in (sg.WIN_CLOSED, 'Exit'):
|
||||
break
|
||||
|
||||
sg.cprint(event, values)
|
||||
tray.show_message(title=event, message=values)
|
||||
|
||||
if event in ('Show Window', sg.EVENT_SYSTEM_TRAY_ICON_DOUBLE_CLICKED):
|
||||
window.un_hide()
|
||||
window.bring_to_front()
|
||||
elif event in ('Hide Window', sg.WIN_CLOSE_ATTEMPTED_EVENT):
|
||||
window.hide()
|
||||
tray.show_icon() # if hiding window, better make sure the icon is visible
|
||||
# tray.notify('System Tray Item Chosen', f'You chose {event}')
|
||||
elif event == 'Happy':
|
||||
tray.change_icon(sg.EMOJI_BASE64_HAPPY_JOY)
|
||||
elif event == 'Sad':
|
||||
tray.change_icon(sg.EMOJI_BASE64_FRUSTRATED)
|
||||
elif event == 'Plain':
|
||||
tray.change_icon(sg.DEFAULT_BASE64_ICON)
|
||||
elif event == 'Hide Icon':
|
||||
tray.hide_icon()
|
||||
elif event == 'Show Icon':
|
||||
tray.show_icon()
|
||||
elif event == 'Change Tooltip':
|
||||
tray.set_tooltip(values['-IN-'])
|
||||
|
||||
tray.close() # optional but without a close, the icon may "linger" until moused over
|
||||
window.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue