From 4cf4f3a7c62c4db00d56507ac9e37a05381941cb Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 2 Jan 2013 00:03:58 +0200 Subject: [PATCH] Issue #16541: tk_setPalette() now works with keyword arguments. Added a test for tk_setPalette(). --- Lib/tkinter/__init__.py | 2 +- Lib/tkinter/test/test_tkinter/test_misc.py | 45 ++++++++++++++++++++++ Misc/NEWS | 2 + 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 Lib/tkinter/test/test_tkinter/test_misc.py diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py index f2cb60f4b5e..3ba4bb00ca9 100644 --- a/Lib/tkinter/__init__.py +++ b/Lib/tkinter/__init__.py @@ -380,7 +380,7 @@ class Misc: background, highlightColor, selectForeground, disabledForeground, insertBackground, troughColor.""" self.tk.call(('tk_setPalette',) - + _flatten(args) + _flatten(kw.items())) + + _flatten(args) + _flatten(list(kw.items()))) def tk_menuBar(self, *args): """Do not use. Needed in Tk 3.6 and earlier.""" pass # obsolete since Tk 4.0 diff --git a/Lib/tkinter/test/test_tkinter/test_misc.py b/Lib/tkinter/test/test_tkinter/test_misc.py new file mode 100644 index 00000000000..d325b3132a7 --- /dev/null +++ b/Lib/tkinter/test/test_tkinter/test_misc.py @@ -0,0 +1,45 @@ +import unittest +import tkinter +from tkinter import ttk +from test import support + +support.requires('gui') + +class MiscTest(unittest.TestCase): + + def setUp(self): + self.root = ttk.setup_master() + + def test_tk_setPalette(self): + root = self.root + root.tk_setPalette('black') + self.assertEqual(root['background'], 'black') + root.tk_setPalette('white') + self.assertEqual(root['background'], 'white') + self.assertRaisesRegex(tkinter.TclError, + '^unknown color name "spam"$', + root.tk_setPalette, 'spam') + + root.tk_setPalette(background='black') + self.assertEqual(root['background'], 'black') + root.tk_setPalette(background='blue', highlightColor='yellow') + self.assertEqual(root['background'], 'blue') + self.assertEqual(root['highlightcolor'], 'yellow') + root.tk_setPalette(background='yellow', highlightColor='blue') + self.assertEqual(root['background'], 'yellow') + self.assertEqual(root['highlightcolor'], 'blue') + self.assertRaisesRegex(tkinter.TclError, + '^unknown color name "spam"$', + root.tk_setPalette, background='spam') + self.assertRaisesRegex(tkinter.TclError, + '^must specify a background color$', + root.tk_setPalette, spam='white') + self.assertRaisesRegex(tkinter.TclError, + '^must specify a background color$', + root.tk_setPalette, highlightColor='blue') + + +tests_gui = (MiscTest, ) + +if __name__ == "__main__": + support.run_unittest(*tests_gui) diff --git a/Misc/NEWS b/Misc/NEWS index b9b14a79ba6..5ef30afc5d8 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -189,6 +189,8 @@ Core and Builtins Library ------- +- Issue #16541: tk_setPalette() now works with keyword arguments. + - Issue #16819: IDLE method completion now correctly works for bytes literals. - Issue #9586: Redefine SEM_FAILED on MacOSX to keep compiler happy.