From 18f07ce3b36f832ca1f120940b105e45d588b29b Mon Sep 17 00:00:00 2001 From: Xiaokang2022 <2951256653@qq.com> Date: Tue, 17 Dec 2024 10:06:30 +0800 Subject: [PATCH 1/7] fix: Fix the bug that the parameter `default` of `tkinter.Wm.iconbitmap` could not take effect when passing an empty string --- Lib/tkinter/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py index bfec04bb6c1e6e..d494c0c9687cd1 100644 --- a/Lib/tkinter/__init__.py +++ b/Lib/tkinter/__init__.py @@ -2265,7 +2265,7 @@ def wm_iconbitmap(self, bitmap=None, default=None): explicitly. DEFAULT can be the relative path to a .ico file (example: root.iconbitmap(default='myicon.ico') ). See Tk documentation for more information.""" - if default: + if default is not None: return self.tk.call('wm', 'iconbitmap', self._w, '-default', default) else: return self.tk.call('wm', 'iconbitmap', self._w, bitmap) From 66b1be2cadd3e64a18bb99b7969e9fe70c4f4ce8 Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 00:07:51 +0000 Subject: [PATCH 2/7] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst diff --git a/Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst b/Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst new file mode 100644 index 00000000000000..f45b5410601e5d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst @@ -0,0 +1,2 @@ +When passing ``default=''`` to tkinter's widget.wm_iconbitmap, treat ``''`` as +an icon path instead of as ``None``. From 39ab05c4a479d9cf249c6c1f93008471c7cb821a Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 18 Dec 2024 13:01:39 +0200 Subject: [PATCH 3/7] Add a test. --- Lib/test/test_tkinter/test_misc.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Lib/test/test_tkinter/test_misc.py b/Lib/test/test_tkinter/test_misc.py index 475edcbd5338a7..37e893dc4cc693 100644 --- a/Lib/test/test_tkinter/test_misc.py +++ b/Lib/test/test_tkinter/test_misc.py @@ -554,6 +554,24 @@ def test_wm_attribute(self): self.assertEqual(w.wm_attributes('alpha'), 1.0 if self.wantobjects else '1.0') + def test_wm_iconbitmap(self): + t = tkinter.Toplevel(self.root) + self.assertEqual(t.wm_iconbitmap(), '') + t.wm_iconbitmap('hourglass') + self.assertEqual(t.wm_iconbitmap(), 'hourglass') + self.assertEqual(self.root.wm_iconbitmap(), '') + t.wm_iconbitmap('') + self.assertEqual(t.wm_iconbitmap(), '') + + if t._windowingsystem == 'win32': + t.wm_iconbitmap(default='hourglass') + self.assertEqual(t.wm_iconbitmap(), 'hourglass') + self.assertEqual(self.root.wm_iconbitmap(), '') + t.wm_iconbitmap(default='') + self.assertEqual(t.wm_iconbitmap(), '') + + t.destroy() + class EventTest(AbstractTkTest, unittest.TestCase): From 1c94507340b19d517a17f6b4eccc1a78073aaedc Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 18 Dec 2024 13:08:42 +0200 Subject: [PATCH 4/7] Tweak NEWS entry. --- .../Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst b/Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst index f45b5410601e5d..ef339a291f0ddd 100644 --- a/Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst +++ b/Misc/NEWS.d/next/Library/2024-12-18-00-07-50.gh-issue-128014.F3aUbz.rst @@ -1,2 +1,2 @@ -When passing ``default=''`` to tkinter's widget.wm_iconbitmap, treat ``''`` as -an icon path instead of as ``None``. +Fix resetting the default window icon by passing ``default=''`` to the +:mod:`tkinter` method :meth:`!wm_iconbitmap`. From 1989ada09c364a240fd1b31ed1b6aed909f657fc Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 29 Dec 2024 13:12:53 +0200 Subject: [PATCH 5/7] Fix test on macOS. --- Lib/test/test_tkinter/test_misc.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_tkinter/test_misc.py b/Lib/test/test_tkinter/test_misc.py index 37e893dc4cc693..a208165106b191 100644 --- a/Lib/test/test_tkinter/test_misc.py +++ b/Lib/test/test_tkinter/test_misc.py @@ -558,7 +558,8 @@ def test_wm_iconbitmap(self): t = tkinter.Toplevel(self.root) self.assertEqual(t.wm_iconbitmap(), '') t.wm_iconbitmap('hourglass') - self.assertEqual(t.wm_iconbitmap(), 'hourglass') + if root._windowingsystem != 'aqua': # Bug in Tk. + self.assertEqual(t.wm_iconbitmap(), 'hourglass') self.assertEqual(self.root.wm_iconbitmap(), '') t.wm_iconbitmap('') self.assertEqual(t.wm_iconbitmap(), '') From 6aac5386549a29151c5cccd9e71549cfadd92cee Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 31 Dec 2024 18:02:42 +0200 Subject: [PATCH 6/7] Fix a typo. --- Lib/test/test_tkinter/test_misc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_tkinter/test_misc.py b/Lib/test/test_tkinter/test_misc.py index a208165106b191..bd424d941320e1 100644 --- a/Lib/test/test_tkinter/test_misc.py +++ b/Lib/test/test_tkinter/test_misc.py @@ -558,7 +558,7 @@ def test_wm_iconbitmap(self): t = tkinter.Toplevel(self.root) self.assertEqual(t.wm_iconbitmap(), '') t.wm_iconbitmap('hourglass') - if root._windowingsystem != 'aqua': # Bug in Tk. + if t._windowingsystem != 'aqua': # Bug in Tk. self.assertEqual(t.wm_iconbitmap(), 'hourglass') self.assertEqual(self.root.wm_iconbitmap(), '') t.wm_iconbitmap('') From 42d8d3ffd108608a88dd70902f809ebd49a9c2a4 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Thu, 2 Jan 2025 16:58:07 +0200 Subject: [PATCH 7/7] Skip the test depending on the Tk patchlevel. --- Lib/test/test_tkinter/test_misc.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_tkinter/test_misc.py b/Lib/test/test_tkinter/test_misc.py index bd424d941320e1..3362169391818b 100644 --- a/Lib/test/test_tkinter/test_misc.py +++ b/Lib/test/test_tkinter/test_misc.py @@ -4,7 +4,8 @@ from tkinter import TclError import enum from test import support -from test.test_tkinter.support import AbstractTkTest, AbstractDefaultRootTest, requires_tk +from test.test_tkinter.support import (AbstractTkTest, AbstractDefaultRootTest, + requires_tk, get_tk_patchlevel) support.requires('gui') @@ -558,7 +559,13 @@ def test_wm_iconbitmap(self): t = tkinter.Toplevel(self.root) self.assertEqual(t.wm_iconbitmap(), '') t.wm_iconbitmap('hourglass') - if t._windowingsystem != 'aqua': # Bug in Tk. + bug = False + if t._windowingsystem == 'aqua': + # Tk bug 13ac26b35dc55f7c37f70b39d59d7ef3e63017c8. + patchlevel = get_tk_patchlevel(t) + if patchlevel < (8, 6, 17) or (9, 0) <= patchlevel < (9, 0, 2): + bug = True + if not bug: self.assertEqual(t.wm_iconbitmap(), 'hourglass') self.assertEqual(self.root.wm_iconbitmap(), '') t.wm_iconbitmap('')