diff -r 3a923156ca05 Lib/tkinter/__init__.py --- a/Lib/tkinter/__init__.py Mon Jun 02 21:32:49 2014 +0300 +++ b/Lib/tkinter/__init__.py Mon Jun 02 23:12:41 2014 +0300 @@ -41,7 +41,7 @@ import re -wantobjects = 1 +wantobjects = 0 TkVersion = float(_tkinter.TK_VERSION) TclVersion = float(_tkinter.TCL_VERSION) @@ -2875,10 +2875,16 @@ relief, repeatdelay, repeatinterval, takefocus, troughcolor, width.""" Widget.__init__(self, master, 'scrollbar', cnf, kw) - def activate(self, index): - """Display the element at INDEX with activebackground and activerelief. - INDEX can be "arrow1","slider" or "arrow2".""" - self.tk.call(self._w, 'activate', index) + def activate(self, element=None, *, index=None): + """If element is not None and is one of "arrow1", "slider" or "arrow2" + then it is marked as active. Otherwise the current active element is + returned, or None is returned in case no element is active.""" + if index is not None: + warnings.warn("The 'index' keyword argument is deprecated and " + "will be removed in 3.6. Use 'element' instead.", + DeprecationWarning, 2) + element = index + return self.tk.call(self._w, 'activate', element) or None def delta(self, deltax, deltay): """Return the fractional change of the scrollbar setting if it would be moved by DELTAX or DELTAY pixels.""" @@ -2896,10 +2902,10 @@ """Return the current fractional values (upper and lower end) of the slider position.""" return self._getdoubles(self.tk.call(self._w, 'get')) - def set(self, *args): + def set(self, first, last): """Set the fractional values of the slider position (upper and lower ends as value between 0 and 1).""" - self.tk.call((self._w, 'set') + args) + self.tk.call(self._w, 'set', first, last) diff -r 3a923156ca05 Lib/tkinter/test/test_tkinter/test_widgets.py --- a/Lib/tkinter/test/test_tkinter/test_widgets.py Mon Jun 02 21:32:49 2014 +0300 +++ b/Lib/tkinter/test/test_tkinter/test_widgets.py Mon Jun 02 23:12:41 2014 +0300 @@ -916,6 +916,25 @@ self.checkEnumParam(widget, 'orient', 'vertical', 'horizontal', errmsg='bad orientation "{}": must be vertical or horizontal') + def test_activate(self): + sb = self.create() + for e in ('arrow1', 'slider', 'arrow2'): + sb.activate(e) + self.assertEqual(sb.activate(), e) + sb.activate('') + self.assertIsNone(sb.activate()) + self.assertRaises(TypeError, sb.activate, 'arrow1', 'arrow2') + + def test_set(self): + sb = self.create() + sb.set(0.2, 0.4) + self.assertEqual(sb.get(), (0.2, 0.4)) + self.assertRaises(TclError, sb.set, 'abc', 'def') + self.assertRaises(TclError, sb.set, 0.6, 'def') + self.assertRaises(TclError, sb.set, 0.6, None) + self.assertRaises(TypeError, sb.set, 0.6) + self.assertRaises(TypeError, sb.set, 0.6, 0.7, 0.8) + @add_standard_options(StandardOptionsTests) class PanedWindowTest(AbstractWidgetTest, unittest.TestCase):