From 3eea8e3a977c595bf0b598a2d4e8544a646e1b33 Mon Sep 17 00:00:00 2001 From: PySimpleGUI Date: Tue, 7 Sep 2021 15:37:03 -0400 Subject: [PATCH] Removed pyperclip in the base64 single image encoding. Forgot to remove when the clipboard functions were added back in release 4.44.0. Changed docstring for clipboard_set to take bytes as well as string --- DemoPrograms/Demo_Base64_Single_Image_Encoder.py | 11 +++++++---- PySimpleGUI.py | 8 +++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/DemoPrograms/Demo_Base64_Single_Image_Encoder.py b/DemoPrograms/Demo_Base64_Single_Image_Encoder.py index 8c04d3ee..7655a5a1 100644 --- a/DemoPrograms/Demo_Base64_Single_Image_Encoder.py +++ b/DemoPrograms/Demo_Base64_Single_Image_Encoder.py @@ -1,13 +1,13 @@ import PySimpleGUI as sg import base64 -import pyperclip """ Make base64 image from a file This is usually done in order to create a Base64 image for use as an Ucon or a Button image To use, either copy and paste the full path to the file or use the browse button to locate the file. Once chosen, the conversion will happen automatically with the result placed on the clipboard. - When complete, a popup window is shown that automatically closes after 1 second so you aren't bothered with having to close it + When complete, a popup window is shown that tells you to paste the image before closing the window. This is because of a + tkinter problem on Linux. On Windows you can close the Window, but on Linux, you'll need to keep it open until the paste completes NOTE - if you're replacing your ICO file for your window with a base64 image, you will first need to convert your icon from an ICO file into a PNG file. Encode the PNG file and then you'll be able to pass that value in your call to Window: @@ -18,6 +18,8 @@ import pyperclip Input: a single image file Output: clipboard will contain the Base64 Byte String of the source image + + Copyright 2021 PySimpleGUI """ @@ -25,8 +27,9 @@ def convert_file_to_base64(filename): try: contents = open(filename, 'rb').read() encoded = base64.b64encode(contents) - pyperclip.copy(str(encoded)) - sg.popup('Copied to your clipboard!', auto_close=True, auto_close_duration=1) + sg.clipboard_set(encoded) + # pyperclip.copy(str(encoded)) + sg.popup('Copied to your clipboard!', 'Keep window open until you have pasted the base64 bytestring') except Exception as error: sg.popup_error('Cancelled - An error occurred', error) diff --git a/PySimpleGUI.py b/PySimpleGUI.py index 05bbc146..0eb4f594 100644 --- a/PySimpleGUI.py +++ b/PySimpleGUI.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -version = __version__ = "4.47.0.2 Unreleased" +version = __version__ = "4.47.0.3 Unreleased" """ Changelog since 4.47.0 release to PyPI on 30 Aug 2021 @@ -11,6 +11,8 @@ version = __version__ = "4.47.0.2 Unreleased" then you likely want all of your popups to also have it set. Now set it one time using this option. You can override by manually setting on a popup or window Added user_settings_object to return the UserSettings object that the function level interfaces use (prints nicely for example) + 4,47.0.3 + Changed docstring for set_clipboard to take str or bytes """ @@ -16944,7 +16946,7 @@ def clipboard_set(new_value): need to stay running for Linux systems. :param new_value: value to set the clipboard to. Will be converted to a string - :type new_value: (str) + :type new_value: (str | bytes) """ # Create and use a temp window root = tk.Tk() @@ -21865,7 +21867,7 @@ if running_trinket(): USE_CUSTOM_TITLEBAR = True if tclversion_detailed.startswith('8.5'): - warnings.warn('You are running a VERY old version of tkinter {}'.format(tclversion_detailed), UserWarning) + warnings.warn('You are running a VERY old version of tkinter {}. You cannot use PNG formatted images for example. Please upgrade to 8.6.x'.format(tclversion_detailed), UserWarning) _read_mac_global_settings() if running_mac():