Skip to content

Commit 3b7a17f

Browse files
committed
Demo Program to show new Watermark features
1 parent d447633 commit 3b7a17f

File tree

2 files changed

+127
-5
lines changed

2 files changed

+127
-5
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
import PySimpleGUI as sg
2+
3+
"""
4+
Demo - Watermarking all windows
5+
6+
Watermarking windows can be done in 4.60.0.160 and greater. It's a very simple mechanism for now.
7+
8+
The option is normally set in the Global Settings control panel. However, you can "Force" the watermark
9+
on all windows by setting the Window paramter watermark=True on any window you create and from then on
10+
all windows will have the watermark.
11+
12+
Copyright 2023 PySimpleGUI
13+
"""
14+
15+
"""
16+
M"""""""`YM
17+
M mmmm. M
18+
M MMMMM M .d8888b.
19+
M MMMMM M 88' `88
20+
M MMMMM M 88. .88
21+
M MMMMM M `88888P'
22+
MMMMMMMMMMM
23+
24+
M""MMM""MMM""M dP dP
25+
M MMM MMM M 88 88
26+
M MMP MMP M .d8888b. d8888P .d8888b. 88d888b. 88d8b.d8b. .d8888b. 88d888b. 88 .dP
27+
M MM' MM' .M 88' `88 88 88ooood8 88' `88 88'`88'`88 88' `88 88' `88 88888"
28+
M `' . '' .MM 88. .88 88 88. ... 88 88 88 88 88. .88 88 88 `8b.
29+
M .d .dMMM `88888P8 dP `88888P' dP dP dP dP `88888P8 dP dP `YP
30+
MMMMMMMMMMMMMM
31+
"""
32+
33+
layout = [ [sg.Text('No Watermark')],
34+
[sg.Button('Exit')] ]
35+
36+
window = sg.Window('No Watermark', layout)
37+
38+
while True:
39+
event, values = window.read()
40+
if event == sg.WIN_CLOSED or event == 'Exit':
41+
break
42+
43+
window.close()
44+
45+
46+
"""
47+
MP""""""`MM dP
48+
M mmmmm..M 88
49+
M. `YM dP dP .d8888b. d8888P .d8888b. 88d8b.d8b.
50+
MMMMMMM. M 88 88 Y8ooooo. 88 88ooood8 88'`88'`88
51+
M. .MMM' M 88. .88 88 88 88. ... 88 88 88
52+
Mb. .dM `8888P88 `88888P' dP `88888P' dP dP dP
53+
MMMMMMMMMMM .88
54+
d8888P
55+
M""MMM""MMM""M dP dP
56+
M MMM MMM M 88 88
57+
M MMP MMP M .d8888b. d8888P .d8888b. 88d888b. 88d8b.d8b. .d8888b. 88d888b. 88 .dP
58+
M MM' MM' .M 88' `88 88 88ooood8 88' `88 88'`88'`88 88' `88 88' `88 88888"
59+
M `' . '' .MM 88. .88 88 88. ... 88 88 88 88 88. .88 88 88 `8b.
60+
M .d .dMMM `88888P8 dP `88888P' dP dP dP dP `88888P8 dP dP `YP
61+
MMMMMMMMMMMMMM
62+
"""
63+
64+
sg.set_options(watermark_text='') # noramlly not requird unless previously set by user
65+
66+
layout = [ [sg.Text('System Provided Watermark')],
67+
[sg.Button('Exit')] ]
68+
69+
window = sg.Window('System Watermark', layout, watermark=True)
70+
71+
while True:
72+
event, values = window.read()
73+
if event == sg.WIN_CLOSED or event == 'Exit':
74+
break
75+
76+
window.close()
77+
78+
79+
"""
80+
M""MMMMM""M
81+
M MMMMM M
82+
M MMMMM M .d8888b. .d8888b. 88d888b.
83+
M MMMMM M Y8ooooo. 88ooood8 88' `88
84+
M `MMM' M 88 88. ... 88
85+
Mb dM `88888P' `88888P' dP
86+
MMMMMMMMMMM
87+
88+
M""MMM""MMM""M dP dP
89+
M MMM MMM M 88 88
90+
M MMP MMP M .d8888b. d8888P .d8888b. 88d888b. 88d8b.d8b. .d8888b. 88d888b. 88 .dP
91+
M MM' MM' .M 88' `88 88 88ooood8 88' `88 88'`88'`88 88' `88 88' `88 88888"
92+
M `' . '' .MM 88. .88 88 88. ... 88 88 88 88 88. .88 88 88 `8b.
93+
M .d .dMMM `88888P8 dP `88888P' dP dP dP dP `88888P8 dP dP `YP
94+
MMMMMMMMMMMMMM
95+
"""
96+
97+
sg.set_options(watermark_text='User Supplied Version 1.0')
98+
99+
layout = [ [sg.Text('User Supplied Watermark')],
100+
[sg.Button('Exit')] ]
101+
102+
window = sg.Window('User Supplied Watermark', layout, watermark=True)
103+
104+
while True:
105+
event, values = window.read()
106+
if event == sg.WIN_CLOSED or event == 'Exit':
107+
break
108+
109+
window.close()

PySimpleGUI.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/python3
22

3-
version = __version__ = "4.61.0.160 Unreleased"
3+
version = __version__ = "4.61.0.161 Unreleased"
44

55
_change_log = """
66
Changelog since 4.60.0 released to PyPI on 8-May-2022
@@ -387,6 +387,8 @@
387387
New Global Settings feature - Window watermarking. Can be forced on temporarily by settings watermark=True in your Window creation
388388
4.61.0.160
389389
Fix "Bold" crash from watermarking feature
390+
4.61.0.161
391+
New set_options to control user-defined watermarks
390392
"""
391393

392394
__version__ = version.split()[0] # For PEP 396 and PEP 345
@@ -19013,7 +19015,7 @@ def set_options(icon=None, button_color=None, element_size=(None, None), button_
1901319015
enable_mac_notitlebar_patch=None, use_custom_titlebar=None, titlebar_background_color=None, titlebar_text_color=None, titlebar_font=None,
1901419016
titlebar_icon=None, user_settings_path=None, pysimplegui_settings_path=None, pysimplegui_settings_filename=None, keep_on_top=None, dpi_awareness=None, scaling=None, disable_modal_windows=None, force_modal_windows=None, tooltip_offset=(None, None),
1901519017
sbar_trough_color=None, sbar_background_color=None, sbar_arrow_color=None, sbar_width=None, sbar_arrow_width=None, sbar_frame_color=None, sbar_relief=None, alpha_channel=None,
19016-
hide_window_when_creating=None, use_button_shortcuts=None):
19018+
hide_window_when_creating=None, use_button_shortcuts=None, watermark_text=None):
1901719019
"""
1901819020
:param icon: Can be either a filename or Base64 value. For Windows if filename, it MUST be ICO format. For Linux, must NOT be ICO. Most portable is to use a Base64 of a PNG file. This works universally across all OS's
1901919021
:type icon: bytes | str
@@ -19147,6 +19149,8 @@ def set_options(icon=None, button_color=None, element_size=(None, None), button_
1914719149
:type hide_window_when_creating: (bool)
1914819150
:param use_button_shortcuts: If True then Shortcut Char will be used with Buttons
1914919151
:type use_button_shortcuts: (bool)
19152+
:param watermark_text: Set the text that will be used if a window is watermarked
19153+
:type watermark_text: (str)
1915019154
:return: None
1915119155
:rtype: None
1915219156
"""
@@ -19424,6 +19428,10 @@ def set_options(icon=None, button_color=None, element_size=(None, None), button_
1942419428

1942519429
if use_button_shortcuts is not None:
1942619430
DEFAULT_USE_BUTTON_SHORTCUTS = use_button_shortcuts
19431+
19432+
if watermark_text is not None:
19433+
pysimplegui_user_settings.set('-watermark user text-', watermark_text)
19434+
1942719435
return True
1942819436

1942919437

@@ -25499,9 +25507,14 @@ def _global_settings_get_watermark_info():
2549925507
ver_text = ' ' + version if pysimplegui_user_settings.get('-watermark ver-', False if not forced else True) or forced else ''
2550025508
framework_ver_text = ' ' + framework_version if pysimplegui_user_settings.get('-watermark framework ver-', False if not forced else True) or forced else ''
2550125509
watermark_font = pysimplegui_user_settings.get('-watermark font-', '_ 9 bold')
25502-
background_color = pysimplegui_user_settings.get('-watermark bg color-', 'window.BackgroundColor')
25510+
# background_color = pysimplegui_user_settings.get('-watermark bg color-', 'window.BackgroundColor')
25511+
user_text = pysimplegui_user_settings.get('-watermark user text-', '')
25512+
if user_text:
25513+
text = str(user_text)
25514+
else:
25515+
text = prefix_text + ver_text + framework_ver_text
25516+
Window._watermark = lambda window: Text(text, font=watermark_font, background_color= window.BackgroundColor)
2550325517

25504-
Window._watermark = lambda window: Text(prefix_text + ver_text + framework_ver_text, font=watermark_font, background_color= window.BackgroundColor)
2550525518

2550625519

2550725520
def main_global_get_screen_snapshot_symcode():
@@ -26416,4 +26429,4 @@ def _optional_window_data(window):
2641626429
exit(0)
2641726430
main()
2641826431
exit(0)
26419-
#2e985cee1c05c21e66c65647555cdb19d022a40185cfad6fc96617a35f12286adcdeb20234a21b9cd4ffe4ccd3e5a259aa9bbdf3d772c389d0e5550ee89901ea46ac134062a39601e62fab71080f784137d54e8d6ee0eb35d9e2b7f0517147534b79aaf35f2b1d7194f0ad6dc0ae79167c616e719a74054d5bfaecb394aa78556ef3c0dd37fbd275c6f22008294cd4e0734cc9b5d151b49a2f42b754b736eb7322a0f3fc24efb638fba9b5ecc8b49ee2df3b2d0ffea18fd736978f1cfea73eb41dfaee1e4a339fa02df2660851accc6ec1e07f37b83b26edece5fb3e3f04c0163e6a499aa3bad9df6843b864cc8f2ae7ea2dadcdd69814997c4a97599f860ec8482e9bbf3969d27c7c288069a7218dceebaa410a9af1bd40edc331b7d96b2faaf0861b5a9cc7234f91d00c545efc94f4874aed65646105c61776b900d90c2c84578cf054ba409e21034a00a7e30a7e971027cb08433de7ff9f5d7b56c31977acb08bc18c4da434928e02257810856237cc6e81bdd4ca95d97ba2e9d43f1ded28f9a21ef3136f8ac6075117feddc13daa808a3c6e419e355b2a1ee86d057f47f0fa51e6e344c39a0c95ccb9e3dd98d89c4fde2411ec0877137fa27065a4e9ca1e75d27dc6b69c1df15c32052d8b303504243916275195f28daccc02c7cd539bc66d407bd89a77da1fc183c756e94b44fd947b72d53464d9a4ecab02cc17501e9e
26432+
#0ca08f0f911461d1d3ae002c055cdf86ca5d243565b37eef48a6b3e02a3e917ab3af8d7317296be3d6074b3257e506129a87b27b5ac89ab40f1ff33fbb907e4d32f218f30eb86903bcf017466d2291a534180cc363996ebac425524929e3caebd4d524524f380c2471d7497ac7f62df5a3525cbd9ebff46b6dcca3caf749c5c6e32b3697685a524169887216d4b24c66760e31c4b92f52e15c00a4adbf0b66b2b474fc8883def17a066b98ce9c0839f6c7900a4df01b49321b8410894264a7dd24babe7a66556ce725d0fe18810ba616e777c8db14978e56679262ef41c917dc52a2454b4926c52aa8c4415f86b824dbaadb89c15b020de386d263e13b609cd26a76925840970bcfb198ecc165609780d9fc24453a25d917254404251a69aa68b4503f761d5cdedbcb68ab281be964d1e04182d8f87135648a71b25a9655d02662593556b55f79d60109151403a478d4824c09264fb2b5b056b4fa57fbf7c391cf746c48ec98da618a509b2a72434d86c92c10961c85744c6172b37a183b3553299ae092a265764bf85d3d6c061f86dbf3c64c089bfa6f570beda30138c8c3427fe97b4a9c9b80571e7c67f718723f802d8d1959378b26df664ec7e1b0176c5cfbedb6f8d0280298633304d18bfdf3fd5d7900182bc47414d3b2ab7624f9756c33332e022160f619a0df34df54aebba8dc622b1cc68cb05807dd31372009363a

0 commit comments

Comments
 (0)