mirror of
https://github.com/python/cpython.git
synced 2025-09-29 03:35:31 +00:00
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().
This commit is contained in:
parent
6e20460dc6
commit
320f339131
3 changed files with 33 additions and 6 deletions
|
@ -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):
|
||||||
"""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):
|
||||||
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
|
||||||
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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue