From f5b1cf0eea7cd24996b3fae677969176b6f06ab7 Mon Sep 17 00:00:00 2001 From: Juhani Numminen Date: Thu, 13 Feb 2020 15:28:37 +0200 Subject: [PATCH] Tk: set window icon make_help_toplevel changed from Tk to Toplevel since Tk creates another Tcl interpreter, causing errors like this: '_tkinter.TclError: can't use "pyimage228" as iconphoto: not a photo image' 1024x1024 logo file is renamed because it has large margins on each side which is unsuitable for a window icon. --- android/mkp4a.common | 2 +- .../pysol.png => logo-with-margin-1024.png} | Bin pysollib/ui/tktile/tkutil.py | 2 +- pysollib/util.py | 6 ++++++ pysollib/winsystems/common.py | 6 ++++++ 5 files changed, 14 insertions(+), 2 deletions(-) rename data/images/{icons/1024x1024/pysol.png => logo-with-margin-1024.png} (100%) diff --git a/android/mkp4a.common b/android/mkp4a.common index ee90a0e0..3845d84c 100644 --- a/android/mkp4a.common +++ b/android/mkp4a.common @@ -30,7 +30,7 @@ p4a_options="\ --private ${tmpdir} \ --orientation sensor \ --icon ${tmpdir}/data/images/icons/48x48/pysol.png \ - --presplash ${tmpdir}/data/images/icons/1024x1024/pysol.png \ + --presplash ${tmpdir}/data/images/logo-with-margin-1024.png \ --copy-libs \ --add-jar ${tmpdir}/support-v4-24.1.1.aar \ --color always" diff --git a/data/images/icons/1024x1024/pysol.png b/data/images/logo-with-margin-1024.png similarity index 100% rename from data/images/icons/1024x1024/pysol.png rename to data/images/logo-with-margin-1024.png diff --git a/pysollib/ui/tktile/tkutil.py b/pysollib/ui/tktile/tkutil.py index 0319e6d3..4908881c 100644 --- a/pysollib/ui/tktile/tkutil.py +++ b/pysollib/ui/tktile/tkutil.py @@ -110,7 +110,7 @@ def makeToplevel(parent, title=None): def make_help_toplevel(app, title=None): # Create an independent Toplevel window. from pysollib.winsystems import init_root_window - window = tkinter.Tk(className=TITLE) + window = tkinter.Toplevel(class_=TITLE) init_root_window(window, app) return window diff --git a/pysollib/util.py b/pysollib/util.py index 8c669f43..94d38aab 100644 --- a/pysollib/util.py +++ b/pysollib/util.py @@ -167,5 +167,11 @@ class DataLoader: filename += ('.ico' if os.name == 'nt' else '.xbm') return self.findFile(filename, subdirs) + def findAllIconSizes(self, filename='pysol.png'): + icondir = self.findDir(os.path.join('images', 'icons')) + icons = [os.path.join(icondir, subdir, filename) for subdir in + os.listdir(icondir)] + return filter(os.path.isfile, icons) + def findDir(self, filename, subdirs=None): return self.__findFile(os.path.isdir, filename, subdirs) diff --git a/pysollib/winsystems/common.py b/pysollib/winsystems/common.py index 2ea85330..3a65bbea 100644 --- a/pysollib/winsystems/common.py +++ b/pysollib/winsystems/common.py @@ -32,6 +32,7 @@ from pysollib.settings import TOOLKIT, USE_TILE from pysollib.settings import VERSION if TOOLKIT == 'tk': + from pysollib.ui.tktile.tkutil import loadImage if USE_TILE: from six.moves import tkinter_ttk as ttk @@ -89,6 +90,11 @@ def base_init_root_window(root, app): # root.wm_group(root) root.wm_title(TITLE + ' ' + VERSION) root.wm_iconname(TITLE + ' ' + VERSION) + + if TOOLKIT == 'tk': + icons = [loadImage(img) for img in app.dataloader.findAllIconSizes()] + root.wm_iconphoto(True, *icons) + # set minsize sw, sh = (root.winfo_screenwidth(), root.winfo_screenheight()) if sw < 640 or sh < 480: