2021-05-21 19:44:00 +00:00
import PySimpleGUI as sg
"""
Demo Desktop Widget Postit
2021-08-08 17:14:08 +00:00
This is the longer version as it adds a lot to the right click menu to make it like
the other more complete desktop widgets .
2021-05-21 19:44:00 +00:00
2021-05-24 14:08:06 +00:00
Note that while the window has no scrollbar , you can still use the mousewheel to scroll
2021-08-08 17:14:08 +00:00
2021-05-21 19:44:00 +00:00
Copyright 2021 PySimpleGUI
"""
# ----- Make the window -----
2021-08-08 17:14:08 +00:00
def make_window ( loc ) :
text_font = sg . user_settings_get_entry ( ' -font- ' , ' _ 20 ' )
text = sg . user_settings_get_entry ( ' -text- ' , ' ' )
alpha = sg . user_settings_get_entry ( ' -alpha- ' , 1.0 )
title = sg . user_settings_get_entry ( ' -title- ' , ' Postit ' )
layout = [ [ sg . T ( title , text_color = ' black ' , background_color = ' #FFFF88 ' , k = ' -TITLE- ' ) ] ,
[ sg . ML ( text , size = ( 30 , 5 ) , background_color = ' #FFFF88 ' , no_scrollbar = True , k = ' -ML- ' , border_width = 0 , expand_y = True , expand_x = True , font = text_font ) ,
sg . Sizegrip ( background_color = ' #FFFF88 ' ) ] ]
window = sg . Window ( ' Postit ' , layout ,
no_titlebar = True , grab_anywhere = True , margins = ( 0 , 0 ) , background_color = ' #FFFF88 ' , element_padding = ( 0 , 0 ) , location = loc ,
2021-08-09 17:08:21 +00:00
right_click_menu = [ [ ' ' ] , [ ' Edit Me ' , ' Change Font ' , ' Alpha ' , [ str ( x ) for x in range ( 1 , 11 ) ] , ' Choose Title ' , ' Exit ' , ] ] , keep_on_top = True ,
2021-08-08 17:14:08 +00:00
font = ' _ 20 ' , right_click_menu_font = text_font , resizable = True , finalize = True , alpha_channel = alpha )
window . set_min_size ( window . size )
return window
2021-05-21 19:44:00 +00:00
# ----- Make sure it doesn't get any smaller than it is initially -----
2021-08-08 17:14:08 +00:00
def main ( ) :
loc = sg . user_settings_get_entry ( ' -location- ' , ( None , None ) )
window = make_window ( loc )
while True : # Event Loop
event , values = window . read ( )
print ( event , values )
2021-08-09 17:08:21 +00:00
if event in ( sg . WIN_CLOSED , ' Exit ' ) :
if event == ' Exit ' :
sg . user_settings_set_entry ( ' -location- ' , window . current_location ( ) )
2021-08-08 17:14:08 +00:00
break
if event == ' Edit Me ' :
sg . execute_editor ( __file__ )
elif event == ' Change Font ' :
font = sg . popup_get_text ( ' Main Information Font and Size (e.g. courier 70) ' , default_text = sg . user_settings_get_entry ( ' -font- ' ) , keep_on_top = True , location = window . current_location ( ) )
if font :
sg . user_settings_set_entry ( ' -font- ' , font )
2021-08-09 17:08:21 +00:00
loc = window . current_location ( )
window . close ( )
window = make_window ( loc )
2021-08-08 17:14:08 +00:00
elif event in [ str ( x ) for x in range ( 1 , 11 ) ] :
window . set_alpha ( int ( event ) / 10 )
sg . user_settings_set_entry ( ' -alpha- ' , int ( event ) / 10 )
elif event == ' Choose Title ' :
new_title = sg . popup_get_text ( ' Choose a title for your date ' , default_text = sg . user_settings_get_entry ( ' -title- ' , ' Postit ' ) , location = window . current_location ( ) , keep_on_top = True )
if new_title is not None :
window [ ' -TITLE- ' ] . update ( new_title )
sg . user_settings_set_entry ( ' -title- ' , new_title )
sg . user_settings_set_entry ( ' -text- ' , window [ ' -ML- ' ] . get ( ) . rstrip ( ) )
window . close ( )
if __name__ == ' __main__ ' :
# To start the window at a specific location, get this location on the command line
# The location should be in form x,y with no spaces
main ( )