diff -r b3fe2ef13470 Lib/tkinter/__init__.py --- a/Lib/tkinter/__init__.py Tue Dec 04 09:30:24 2012 +0100 +++ b/Lib/tkinter/__init__.py Tue Dec 04 14:31:25 2012 +0200 @@ -387,7 +387,7 @@ 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 -r b3fe2ef13470 Lib/tkinter/test/test_tkinter/test_misc.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/tkinter/test/test_tkinter/test_misc.py Tue Dec 04 14:31:25 2012 +0200 @@ -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)