Commit 320f3391 authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #6167: Scrollbar.activate() now returns the name of active element if

the argument is not specified.  Scrollbar.set() now always accepts only 2
arguments.  Added tests for Scrollbar.activate() and Scrollbar.set().
parent 6e20460d
...@@ -2875,10 +2875,14 @@ class Scrollbar(Widget): ...@@ -2875,10 +2875,14 @@ class Scrollbar(Widget):
relief, repeatdelay, repeatinterval, takefocus, relief, repeatdelay, repeatinterval, takefocus,
troughcolor, width.""" troughcolor, width."""
Widget.__init__(self, master, 'scrollbar', cnf, kw) Widget.__init__(self, master, 'scrollbar', cnf, kw)
def activate(self, index): def activate(self, index=None):
"""Display the element at INDEX with activebackground and activerelief. """Marks the element indicated by index as active.
INDEX can be "arrow1","slider" or "arrow2".""" The only index values understood by this method are "arrow1",
self.tk.call(self._w, 'activate', index) "slider", or "arrow2". If any other value is specified then no
element of the scrollbar will be active. If index is not specified,
the method returns the name of the element that is currently active,
or None if no element is active."""
return self.tk.call(self._w, 'activate', index) or None
def delta(self, deltax, deltay): def delta(self, deltax, deltay):
"""Return the fractional change of the scrollbar setting if it """Return the fractional change of the scrollbar setting if it
would be moved by DELTAX or DELTAY pixels.""" would be moved by DELTAX or DELTAY pixels."""
...@@ -2896,10 +2900,10 @@ class Scrollbar(Widget): ...@@ -2896,10 +2900,10 @@ class Scrollbar(Widget):
"""Return the current fractional values (upper and lower end) """Return the current fractional values (upper and lower end)
of the slider position.""" of the slider position."""
return self._getdoubles(self.tk.call(self._w, 'get')) 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 """Set the fractional values of the slider position (upper and
lower ends as value between 0 and 1).""" lower ends as value between 0 and 1)."""
self.tk.call((self._w, 'set') + args) self.tk.call(self._w, 'set', first, last)
......
...@@ -916,6 +916,25 @@ class ScrollbarTest(AbstractWidgetTest, unittest.TestCase): ...@@ -916,6 +916,25 @@ class ScrollbarTest(AbstractWidgetTest, unittest.TestCase):
self.checkEnumParam(widget, 'orient', 'vertical', 'horizontal', self.checkEnumParam(widget, 'orient', 'vertical', 'horizontal',
errmsg='bad orientation "{}": must be vertical or 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) @add_standard_options(StandardOptionsTests)
class PanedWindowTest(AbstractWidgetTest, unittest.TestCase): class PanedWindowTest(AbstractWidgetTest, unittest.TestCase):
......
...@@ -108,6 +108,10 @@ Core and Builtins ...@@ -108,6 +108,10 @@ Core and Builtins
Library Library
------- -------
- Issue #6167: Scrollbar.activate() now returns the name of active element if
the argument is not specified. Scrollbar.set() now always accepts only 2
arguments.
- Issue #15275: Clean up and speed up the ntpath module. - Issue #15275: Clean up and speed up the ntpath module.
- Issue #21888: plistlib's load() and loads() now work if the fmt parameter is - Issue #21888: plistlib's load() and loads() now work if the fmt parameter is
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment