https://github.com/python/cpython/commit/77d6d5d8fcc8565034dac378b2184131af735512
commit: 77d6d5d8fcc8565034dac378b2184131af735512
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2026-03-11T21:01:03+02:00
summary:
gh-145736: Fix Tkinter tests for Tk 8.7, 9.0 and 9.1 (GH-145738)
files:
M Lib/test/test_tkinter/test_widgets.py
M Lib/test/test_tkinter/widget_tests.py
M Lib/test/test_ttk/test_widgets.py
diff --git a/Lib/test/test_tkinter/test_widgets.py
b/Lib/test/test_tkinter/test_widgets.py
index f3579a23afc539..1c400e970eb02d 100644
--- a/Lib/test/test_tkinter/test_widgets.py
+++ b/Lib/test/test_tkinter/test_widgets.py
@@ -26,12 +26,8 @@ def float_round(x):
return float(round(x))
class AbstractToplevelTest(AbstractWidgetTest, PixelSizeTests):
- if tk_version < (9, 0):
- _no_round = {'padx', 'pady'}
- else:
- _no_round = {'borderwidth', 'height', 'highlightthickness', 'padx',
- 'pady', 'width'}
- if tk_version < (9, 0):
+ _no_round = {'padx', 'pady'}
+ if tk_version < (8, 7):
_clipped = {'highlightthickness'}
else:
_clipped = {'borderwidth', 'height', 'highlightthickness', 'padx',
@@ -122,11 +118,6 @@ class FrameTest(AbstractToplevelTest, unittest.TestCase):
'highlightbackground', 'highlightcolor', 'highlightthickness',
'padx', 'pady', 'relief', 'takefocus', 'tile', 'visual', 'width',
)
- if tk_version < (9, 0):
- _no_round = {'padx', 'pady'}
- else:
- _no_round = {'borderwidth', 'height', 'highlightthickness', 'padx',
- 'pady', 'width'}
def create(self, **kwargs):
return tkinter.Frame(self.root, **kwargs)
@@ -142,11 +133,6 @@ class LabelFrameTest(AbstractToplevelTest,
unittest.TestCase):
'labelanchor', 'labelwidget', 'padx', 'pady', 'relief',
'takefocus', 'text', 'visual', 'width',
)
- if tk_version < (9, 0):
- _no_round = {'padx', 'pady'}
- else:
- _no_round = {'borderwidth', 'height', 'highlightthickness', 'padx',
- 'pady', 'width'}
def create(self, **kwargs):
return tkinter.LabelFrame(self.root, **kwargs)
@@ -167,11 +153,19 @@ def test_configure_labelwidget(self):
# Label, Button, Checkbutton, Radiobutton, MenuButton
class AbstractLabelTest(AbstractWidgetTest, IntegerSizeTests):
_rounds_pixels = False
- if tk_version < (9, 0):
+ if tk_version < (8, 7):
_clipped = {}
+ elif tk_version < (9, 0):
+ _clipped = {'borderwidth', 'height', 'highlightthickness', 'padx',
'pady', 'width'}
else:
- _clipped = {'borderwidth', 'insertborderwidth', 'highlightthickness',
- 'padx', 'pady'}
+ _clipped = {'borderwidth', 'height', 'highlightthickness',
+ 'insertborderwidth', 'padx', 'pady', 'width'}
+
+ def setUp(self):
+ super().setUp()
+ if tk_version[:2] == (9, 0) and get_tk_patchlevel(self.root) < (9, 0,
2):
+ self._clipped = self._clipped - {'height', 'width'}
+
@add_configure_tests(StandardOptionsTests)
class LabelTest(AbstractLabelTest, unittest.TestCase):
@@ -201,6 +195,11 @@ class ButtonTest(AbstractLabelTest, unittest.TestCase):
'repeatdelay', 'repeatinterval',
'state', 'takefocus', 'text', 'textvariable',
'underline', 'width', 'wraplength')
+ if tk_version < (8, 7):
+ _clipped = {}
+ else:
+ _clipped = {'borderwidth', 'height', 'highlightthickness',
+ 'padx', 'pady', 'width'}
def create(self, **kwargs):
return tkinter.Button(self.root, **kwargs)
@@ -301,10 +300,17 @@ class MenubuttonTest(AbstractLabelTest,
unittest.TestCase):
'underline', 'width', 'wraplength',
)
_rounds_pixels = (tk_version < (9, 0))
- if tk_version < (9, 0):
+ if tk_version < (8, 7):
_clipped = {'highlightthickness', 'padx', 'pady'}
+ elif tk_version < (9, 0):
+ _clipped = {'borderwidth', 'highlightthickness', 'padx', 'pady'}
else:
- _clipped ={ 'insertborderwidth', 'highlightthickness', 'padx', 'pady'}
+ _clipped = {'borderwidth', 'highlightthickness', 'insertborderwidth',
'padx', 'pady'}
+
+ def setUp(self):
+ super().setUp()
+ if tk_version[:2] == (9, 0) and get_tk_patchlevel(self.root) < (9, 0,
1):
+ self._clipped = self._clipped - {'borderwidth'}
def create(self, **kwargs):
return tkinter.Menubutton(self.root, **kwargs)
@@ -316,16 +322,17 @@ def test_configure_direction(self):
def test_configure_height(self):
widget = self.create()
- if tk_version < (9, 0):
- self.checkIntegerParam(widget, 'height', 100, -100, 0, conv=str)
+ if tk_version < (8, 7) or (tk_version[:2] == (9, 0) and
get_tk_patchlevel(self.root) < (9, 0, 1)):
+ conv = str
else:
- self.checkIntegerParam(widget, 'height', 0, -100, 0)
+ conv = False
+ self.checkIntegerParam(widget, 'height', 100, -100, 0, conv=conv)
def test_configure_image(self):
widget = self.create()
image = tkinter.PhotoImage(master=self.root, name='image1')
self.checkParam(widget, 'image', image, conv=str)
- if tk_version < (9, 0):
+ if tk_version < (8, 7):
errmsg = 'image "spam" doesn\'t exist'
else:
errmsg = 'image "spam" does not exist'
@@ -346,10 +353,11 @@ def test_configure_menu(self):
def test_configure_width(self):
widget = self.create()
- if tk_version < (9, 0):
- self.checkIntegerParam(widget, 'width', 402, -402, 0, conv=str)
+ if tk_version < (8, 7) or (tk_version[:2] == (9, 0) and
get_tk_patchlevel(self.root) < (9, 0, 1)):
+ conv = str
else:
- self.checkIntegerParam(widget, 'width', 402, 0, 0)
+ conv = False
+ self.checkIntegerParam(widget, 'width', 402, -402, 0, conv=conv)
class OptionMenuTest(MenubuttonTest, unittest.TestCase):
@@ -368,12 +376,11 @@ def test_specify_name(self):
@add_configure_tests(IntegerSizeTests, StandardOptionsTests)
class EntryTest(AbstractWidgetTest, unittest.TestCase):
- _rounds_pixels = (tk_version < (9, 0))
- if tk_version < (9, 0):
+ if tk_version < (8, 7):
_clipped = {'highlightthickness'}
else:
- _clipped = {'highlightthickness', 'borderwidth', 'insertborderwidth',
- 'selectborderwidth'}
+ _clipped = {'borderwidth', 'highlightthickness', 'insertborderwidth',
+ 'insertwidth', 'selectborderwidth'}
OPTIONS = (
'background', 'borderwidth', 'cursor',
@@ -398,28 +405,21 @@ def test_configure_disabledbackground(self):
def test_configure_insertborderwidth(self):
widget = self.create(insertwidth=100)
- if tk_version < (9, 0):
- self.checkPixelsParam(widget, 'insertborderwidth',
- 0, 1.3, 2.6, 6, '10p')
- else:
- self.checkPixelsParam(widget, 'insertborderwidth',
- 0, 1.3, 3, 6, '10p')
- self.checkParam(widget, 'insertborderwidth', -2)
+ self.checkPixelsParam(widget, 'insertborderwidth',
+ 0, 1.3, 2.6, 6, -2, '10p')
# insertborderwidth is bounded above by a half of insertwidth.
- expected = 100 // 2 if tk_version < (9, 0) else 60
+ expected = 100 // 2 if tk_version < (8, 7) else 60
self.checkParam(widget, 'insertborderwidth', 60, expected=expected)
def test_configure_insertwidth(self):
widget = self.create()
- self.checkPixelsParam(widget, 'insertwidth', 1.3, 3.6, '10p')
- if tk_version < (9, 0):
+ self.checkPixelsParam(widget, 'insertwidth', 1.3, 3.6, 0.9, '10p')
+ if tk_version < (8, 7):
+ self.checkParam(widget, 'insertwidth', 0, expected=2)
self.checkParam(widget, 'insertwidth', 0.1, expected=2)
self.checkParam(widget, 'insertwidth', -2, expected=2)
- self.checkParam(widget, 'insertwidth', 0.9, expected=1)
else:
- self.checkParam(widget, 'insertwidth', 0.1)
- self.checkParam(widget, 'insertwidth', -2, expected=0)
- self.checkParam(widget, 'insertwidth', 0.9)
+ self.checkPixelsParam(widget, 'insertwidth', 0, 0.1, -2)
def test_configure_invalidcommand(self):
widget = self.create()
@@ -562,7 +562,7 @@ def test_configure_values(self):
# XXX
widget = self.create()
self.assertEqual(widget['values'], '')
- if tk_version < (9, 0):
+ if tk_version < (8, 7) or (tk_version[:2] == (9, 0) and
get_tk_patchlevel(self.root) < (9, 0, 1)):
expected = 'mon tue wed thur'
else:
expected = ('mon', 'tue', 'wed', 'thur')
@@ -571,7 +571,7 @@ def test_configure_values(self):
self.checkParam(widget, 'values', ('mon', 'tue', 'wed', 'thur'),
expected=expected)
- if tk_version < (9, 0):
+ if tk_version < (8, 7) or (tk_version[:2] == (9, 0) and
get_tk_patchlevel(self.root) < (9, 0, 1)):
expected = '42 3.14 {} {any string}'
else:
expected = (42, 3.14, '', 'any string')
@@ -640,9 +640,20 @@ class TextTest(AbstractWidgetTest, unittest.TestCase):
'tabs', 'tabstyle', 'takefocus', 'undo', 'width', 'wrap',
'xscrollcommand', 'yscrollcommand',
)
- _rounds_pixels = (tk_version < (9, 0))
_no_round = {'selectborderwidth'}
- _clipped = {'highlightthickness'}
+ if tk_version < (9, 0):
+ _clipped = {'highlightthickness', 'spacing1', 'spacing2', 'spacing3'}
+ else:
+ _clipped = {'borderwidth', 'height', 'highlightthickness',
+ 'insertborderwidth', 'insertwidth', 'padx', 'pady',
+ 'selectborderwidth', 'spacing1', 'spacing2', 'spacing3'}
+
+ def setUp(self):
+ super().setUp()
+ if tk_version[:2] == (9, 0) and get_tk_patchlevel(self.root) < (9, 0,
2):
+ self._clipped = self._clipped - {'borderwidth', 'height', 'padx',
'pady'}
+ if tk_version[:2] == (9, 0) and get_tk_patchlevel(self.root) < (9, 0,
1):
+ self._clipped = self._clipped - {'insertborderwidth',
'insertwidth', 'selectborderwidth'}
def create(self, **kwargs):
return tkinter.Text(self.root, **kwargs)
@@ -671,9 +682,11 @@ def test_configure_endline(self):
def test_configure_height(self):
widget = self.create()
self.checkPixelsParam(widget, 'height', 100, 101.2, 102.6, '3c')
- expected = 1 if tk_version < (9, 0) else 0
- self.checkParam(widget, 'height', -100, expected=expected)
- self.checkParam(widget, 'height', 0, expected=expected)
+ if tk_version < (9, 0):
+ self.checkParam(widget, 'height', 0, expected=1)
+ self.checkParam(widget, 'height', -100, expected=1)
+ else:
+ self.checkPixelsParam(widget, 'height', 0, -100)
def test_configure_maxundo(self):
widget = self.create()
@@ -689,26 +702,17 @@ def test_configure_insertunfocussed(self):
self.checkEnumParam(widget, 'insertunfocussed',
'hollow', 'none', 'solid')
- def test_configure_selectborderwidth(self):
- widget = self.create()
- value = -2 if tk_version < (9, 0) else 0
- self.checkPixelsParam(widget, 'selectborderwidth',
- 1.3, 2.6, value, '10p', conv=False)
-
def test_configure_spacing1(self):
widget = self.create()
- self.checkPixelsParam(widget, 'spacing1', 20, 21.4, 22.6, '0.5c')
- self.checkParam(widget, 'spacing1', -5, expected=0)
+ self.checkPixelsParam(widget, 'spacing1', 20, 21.4, 22.6, -5, '0.5c')
def test_configure_spacing2(self):
widget = self.create()
- self.checkPixelsParam(widget, 'spacing2', 5, 6.4, 7.6, '0.1c')
- self.checkParam(widget, 'spacing2', -1, expected=0)
+ self.checkPixelsParam(widget, 'spacing2', 5, 6.4, 7.6, -1, '0.1c')
def test_configure_spacing3(self):
widget = self.create()
- self.checkPixelsParam(widget, 'spacing3', 20, 21.4, 22.6, '0.5c')
- self.checkParam(widget, 'spacing3', -10, expected=0)
+ self.checkPixelsParam(widget, 'spacing3', 20, 21.4, 22.6, -10, '0.5c')
def test_configure_startline(self):
widget = self.create()
@@ -781,17 +785,22 @@ class CanvasTest(AbstractWidgetTest, unittest.TestCase):
'xscrollcommand', 'xscrollincrement',
'yscrollcommand', 'yscrollincrement', 'width',
)
- _rounds_pixels = True
- if tk_version < (9, 0):
- _noround = {}
+ if tk_version < (8, 7):
_clipped = {'highlightthickness'}
else:
- _no_round = {'borderwidth', 'height', 'highlightthickness', 'width',
- 'xscrollincrement', 'yscrollincrement'}
- _clipped = {'borderwidth', 'height', 'highlightthickness', 'width',
- 'xscrollincrement', 'yscrollincrement'}
+ _clipped = {'borderwidth', 'height', 'highlightthickness',
+ 'insertborderwidth', 'insertwidth', 'selectborderwidth',
+ 'width', 'xscrollincrement', 'yscrollincrement'}
_stringify = True
+ def setUp(self):
+ super().setUp()
+ if tk_version[:2] == (9, 0) and get_tk_patchlevel(self.root) < (9, 0,
1):
+ self._rounds_pixels = True
+ self._no_round = {'borderwidth', 'height', 'highlightthickness',
+ 'width', 'xscrollincrement', 'yscrollincrement'}
+ self._clipped = self._clipped - {'insertborderwidth',
'insertwidth', 'selectborderwidth'}
+
def create(self, **kwargs):
return tkinter.Canvas(self.root, **kwargs)
@@ -938,7 +947,6 @@ def test_create_line(self):
def test_create_polygon(self):
c = self.create()
- tk87 = tk_version >= (8, 7)
# In Tk < 8.7 polygons are filled, but has no outline by default.
# This affects its size, so always explicitly specify outline.
i1 = c.create_polygon(20, 30, 40, 50, 60, 10, outline='red')
@@ -1043,11 +1051,10 @@ class ListboxTest(AbstractWidgetTest,
unittest.TestCase):
'selectmode', 'setgrid', 'state',
'takefocus', 'width', 'xscrollcommand', 'yscrollcommand',
)
- _rounds_pixels = (tk_version < (9, 0))
- if tk_version < (9, 0):
+ if tk_version < (8, 7):
_clipped = {'highlightthickness'}
else:
- _clipped = { 'borderwidth', 'highlightthickness', 'selectborderwidth'}
+ _clipped = {'borderwidth', 'highlightthickness', 'selectborderwidth'}
def create(self, **kwargs):
return tkinter.Listbox(self.root, **kwargs)
@@ -1185,7 +1192,6 @@ class ScaleTest(AbstractWidgetTest, unittest.TestCase):
'resolution', 'showvalue', 'sliderlength', 'sliderrelief', 'state',
'takefocus', 'tickinterval', 'to', 'troughcolor', 'variable', 'width',
)
- _rounds_pixels = (tk_version < (9, 0))
_clipped = {'highlightthickness'}
default_orient = 'vertical'
@@ -1255,14 +1261,13 @@ class ScrollbarTest(AbstractWidgetTest,
unittest.TestCase):
'repeatdelay', 'repeatinterval',
'takefocus', 'troughcolor', 'width',
)
- _rounds_pixels = True
- if tk_version >= (9, 0):
- _no_round = {'borderwidth', 'elementborderwidth', 'highlightthickness',
- 'width'}
- if tk_version < (9, 0):
+ if tk_version < (8, 7):
_clipped = {'highlightthickness'}
+ elif tk_version < (9, 0):
+ _clipped = {'borderwidth', 'elementborderwidth', 'highlightthickness'}
else:
- _clipped = {'borderwidth', 'highlightthickness', 'width'}
+ _clipped = {'borderwidth', 'elementborderwidth', 'highlightthickness',
'width'}
+ _clipped_to_default = {'elementborderwidth'}
_stringify = True
default_orient = 'vertical'
@@ -1271,9 +1276,7 @@ def create(self, **kwargs):
def test_configure_elementborderwidth(self):
widget = self.create()
- self.checkPixelsParam(widget, 'elementborderwidth', 4.3, 5.6, '1m')
- expected = self._default_pixels if tk_version >= (8, 7) else -2
- self.checkParam(widget, 'elementborderwidth', -2, expected=expected)
+ self.checkPixelsParam(widget, 'elementborderwidth', 4.3, 5.6, -2, '1m')
def test_configure_orient(self):
widget = self.create()
@@ -1300,7 +1303,7 @@ def test_set(self):
self.assertRaises(TypeError, sb.set, 0.6, 0.7, 0.8)
-@add_configure_tests(StandardOptionsTests)
+@add_configure_tests(PixelSizeTests, StandardOptionsTests)
class PanedWindowTest(AbstractWidgetTest, unittest.TestCase):
OPTIONS = (
'background', 'borderwidth', 'cursor',
@@ -1311,14 +1314,8 @@ class PanedWindowTest(AbstractWidgetTest,
unittest.TestCase):
'sashcursor', 'sashpad', 'sashrelief', 'sashwidth',
'showhandle', 'width',
)
- _rounds_pixels = True
- if tk_version < (9, 0):
- _no_round = {'handlesize', 'height', 'proxyborderwidth', 'sashwidth',
- 'selectborderwidth', 'width'}
- else:
- _no_round = {'borderwidth', 'handlepad', 'handlesize', 'height',
- 'proxyborderwidth', 'sashpad', 'sashwidth',
- 'selectborderwidth', 'width'}
+ _no_round = {'handlesize', 'height', 'proxyborderwidth', 'sashwidth',
+ 'selectborderwidth', 'width'}
_clipped = {}
default_orient = 'horizontal'
@@ -1331,13 +1328,7 @@ def test_configure_handlepad(self):
def test_configure_handlesize(self):
widget = self.create()
- self.checkPixelsParam(widget, 'handlesize', 8, 9.4, 10.6, -3, '2m',
- conv=False)
-
- def test_configure_height(self):
- widget = self.create()
- self.checkPixelsParam(widget, 'height', 100, 101.2, 102.6, -100, 0,
'1i',
- conv=False)
+ self.checkPixelsParam(widget, 'handlesize', 8, 9.4, 10.6, -3, '2m')
def test_configure_opaqueresize(self):
widget = self.create()
@@ -1352,8 +1343,7 @@ def test_configure_proxybackground(self):
def test_configure_proxyborderwidth(self):
widget = self.create()
self.checkPixelsParam(widget, 'proxyborderwidth',
- 0, 1.3, 2.9, 6, -2, '10p',
- conv=False)
+ 0, 1.3, 2.9, 6, -2, '10p')
@requires_tk(8, 6, 5)
def test_configure_proxyrelief(self):
@@ -1375,18 +1365,12 @@ def test_configure_sashrelief(self):
def test_configure_sashwidth(self):
widget = self.create()
- self.checkPixelsParam(widget, 'sashwidth', 10, 11.1, 15.6, -3, '1m',
- conv=False)
+ self.checkPixelsParam(widget, 'sashwidth', 10, 11.1, 15.6, -3, '1m')
def test_configure_showhandle(self):
widget = self.create()
self.checkBooleanParam(widget, 'showhandle')
- def test_configure_width(self):
- widget = self.create()
- self.checkPixelsParam(widget, 'width', 402, 403.4, 404.6, -402, 0,
'5i',
- conv=False)
-
def create2(self):
p = self.create()
b = tkinter.Button(p)
@@ -1568,12 +1552,12 @@ class MessageTest(AbstractWidgetTest,
unittest.TestCase):
'justify', 'padx', 'pady', 'relief',
'takefocus', 'text', 'textvariable', 'width',
)
- _rounds_pixels = (tk_version < (9, 0))
_no_round = {'padx', 'pady'}
- if tk_version < (9, 0):
+ if tk_version < (8, 7):
_clipped = {'highlightthickness'}
else:
- _clipped = {'borderwidth', 'highlightthickness', 'padx', 'pady'}
+ _clipped = {'borderwidth', 'highlightthickness', 'padx', 'pady',
'width'}
+ _clipped_to_default = {'padx', 'pady'}
def create(self, **kwargs):
return tkinter.Message(self.root, **kwargs)
@@ -1582,24 +1566,6 @@ def test_configure_aspect(self):
widget = self.create()
self.checkIntegerParam(widget, 'aspect', 250, 0, -300)
- def test_configure_padx(self):
- widget = self.create()
- self.checkPixelsParam(widget, 'padx', 3, 4.4, 5.6, '12m')
- expected = -2 if tk_version < (9, 0) else self._default_pixels
- self.checkParam(widget, 'padx', -2, expected=expected)
-
- def test_configure_pady(self):
- widget = self.create()
- self.checkPixelsParam(widget, 'pady', 3, 4.4, 5.6, '12m')
- expected = -2 if tk_version < (9, 0) else self._default_pixels
- self.checkParam(widget, 'pady', -2, expected=expected)
-
- def test_configure_width(self):
- widget = self.create()
- self.checkPixelsParam(widget, 'width', 402, 403.4, 404.6, 0, '5i')
- expected = 0 if tk_version >= (8, 7) else -402
- self.checkParam(widget, 'width', -402, expected=expected)
-
class DefaultRootTest(AbstractDefaultRootTest, unittest.TestCase):
diff --git a/Lib/test/test_tkinter/widget_tests.py
b/Lib/test/test_tkinter/widget_tests.py
index dd2d7c4da459ab..94244a8b3fe244 100644
--- a/Lib/test/test_tkinter/widget_tests.py
+++ b/Lib/test/test_tkinter/widget_tests.py
@@ -12,11 +12,12 @@
# borderwidth = bd
class AbstractWidgetTest(AbstractTkTest):
- _default_pixels = '' # Value for unset pixel options.
- _rounds_pixels = True # True if some pixel options are rounded.
- _no_round = {} # Pixel options which are not rounded nonetheless
+ _default_pixels = '' if tk_version >= (9, 0) else -1 # Value for unset
pixel options.
+ _rounds_pixels = (tk_version < (9, 0)) # True if some pixel options are
rounded.
+ _no_round = set() # Pixel options which are not rounded nonetheless
_stringify = False # Whether to convert tuples to strings
_allow_empty_justify = False
+ _clipped_to_default = set()
@property
def scaling(self):
@@ -43,9 +44,12 @@ def checkParam(self, widget, name, value, *,
expected=_sentinel,
widget[name] = value
if expected is _sentinel:
expected = value
- if name in self._clipped:
- if not isinstance(expected, str):
- expected = max(expected, 0)
+ if name in self._clipped:
+ if not isinstance(expected, str) and expected < 0:
+ if tk_version >= (8, 7) and name in
self._clipped_to_default:
+ expected = self._default_pixels
+ else:
+ expected = 0
if conv:
expected = conv(expected)
if self._stringify or not self.wantobjects:
@@ -143,10 +147,10 @@ def checkEnumParam(self, widget, name, *values,
self.checkInvalidParam(widget, name, 'spam', errmsg=errmsg)
def checkPixelsParam(self, widget, name, *values, conv=None, **kwargs):
- if not self._rounds_pixels or name in self._no_round:
- conv = False
- elif conv != str:
- conv = round
+ if conv is None:
+ if self._rounds_pixels and name not in self._no_round:
+ conv = round
+ alow_neg = tk_version < (9, 1)
for value in values:
expected = _sentinel
conv1 = conv
@@ -156,6 +160,9 @@ def checkPixelsParam(self, widget, name, *values,
conv=None, **kwargs):
if conv1 and conv1 is not str:
expected = pixels_conv(value) * self.scaling
conv1 = round
+ elif not alow_neg and isinstance(value, (int, float)) and value <
0:
+ self.checkInvalidParam(widget, name, value)
+ continue
self.checkParam(widget, name, value, expected=expected,
conv=conv1, **kwargs)
errmsg = '(bad|expected) screen distance ((or "" )?but got )?"{}"'
@@ -177,7 +184,7 @@ def checkReliefParam(self, widget, name, *,
allow_empty=False):
def checkImageParam(self, widget, name):
image = tkinter.PhotoImage(master=self.root, name='image1')
self.checkParam(widget, name, image, conv=str)
- if tk_version < (9, 0):
+ if tk_version < (8, 7):
errmsg = 'image "spam" doesn\'t exist'
else:
errmsg = 'image "spam" does not exist'
@@ -246,11 +253,7 @@ def test_configure_activeborderwidth(self):
def test_configure_borderwidth(self):
widget = self.create()
self.checkPixelsParam(widget, 'borderwidth',
- 0, 1.3, 2.6, 6, '10p')
- if tk_version < (9, 0):
- self.checkParam(widget, 'borderwidth', -2)
- else:
- self.checkParam(widget, 'borderwidth', 0)
+ 0, 1.3, 2.6, 6, -2, '10p')
if 'bd' in self.OPTIONS:
self.checkPixelsParam(widget, 'bd', 0, 1.3, 2.6, 6, '10p')
@@ -259,50 +262,27 @@ def test_configure_borderwidth(self):
def test_configure_highlightthickness(self):
widget = self.create()
self.checkPixelsParam(widget, 'highlightthickness',
- 0, 1.3, 2.6, 6, '10p')
- self.checkParam(widget, 'highlightthickness', -2)
+ 0, 1.3, 2.6, 6, -2, '10p')
def test_configure_insertborderwidth(self):
widget = self.create()
- if tk_version < (9, 0):
- values = (0, 1.3, 2.6, 6, -2, '10p')
- value = -2
- else:
- values = (0, 1, 3, 6, 13)
- value = 0
- self.checkPixelsParam(widget, 'insertborderwidth', *values)
- self.checkParam(widget, 'insertborderwidth', value)
+ self.checkPixelsParam(widget, 'insertborderwidth', 0, 1.3, 2.6, 6, -2,
'10p')
def test_configure_insertwidth(self):
widget = self.create()
- if tk_version < (9, 0):
- self.checkPixelsParam(widget, 'insertwidth', 1.3, 2.6, -2, '10p')
- else:
- self.checkPixelsParam(widget, 'insertwidth', 1, 3, 0, 13)
+ self.checkPixelsParam(widget, 'insertwidth', 1.3, 2.6, -2, '10p')
def test_configure_padx(self):
widget = self.create()
- self.checkPixelsParam(widget, 'padx', 3, 4.4, 5.6, '12m')
- if tk_version < (9, 0):
- self.checkParam(widget, 'padx', -2)
- else:
- self.checkParam(widget, 'padx', 0)
+ self.checkPixelsParam(widget, 'padx', 3, 4.4, 5.6, -2, '12m')
def test_configure_pady(self):
widget = self.create()
- self.checkPixelsParam(widget, 'pady', 3, 4.4, 5.6, '12m')
- if tk_version < (9, 0):
- self.checkParam(widget, 'pady', -2)
- else:
- self.checkParam(widget, 'pady', 0)
+ self.checkPixelsParam(widget, 'pady', 3, 4.4, 5.6, -2, '12m')
def test_configure_selectborderwidth(self):
widget = self.create()
- if tk_version < (9, 0):
- values = (1.3, 2.6, -2, '10p')
- else:
- values = (1, 3, 0, 13)
- self.checkPixelsParam(widget, 'selectborderwidth', *values)
+ self.checkPixelsParam(widget, 'selectborderwidth', 1.3, 2.6, -2, '10p')
class StandardOptionsTests(PixelOptionsTests):
@@ -569,34 +549,22 @@ class IntegerSizeTests:
""" Tests widgets which only accept integral width and height."""
def test_configure_height(self):
widget = self.create()
- if tk_version < (9, 0):
- self.checkIntegerParam(widget, 'height', 100, -100, 0)
- else:
- self.checkIntegerParam(widget, 'height', 100, 0, 0)
+ self.checkIntegerParam(widget, 'height', 100, -100, 0)
def test_configure_width(self):
widget = self.create()
- if tk_version < (9, 0):
- self.checkIntegerParam(widget, 'width', 402, -402, 0)
- else:
- self.checkIntegerParam(widget, 'width', 402, 0, 0)
+ self.checkIntegerParam(widget, 'width', 402, -402, 0)
class PixelSizeTests:
""" Tests widgets which accept screen distances for width and height."""
def test_configure_height(self):
widget = self.create()
- value = -100 if tk_version < (9, 0) else 0
- self.checkPixelsParam(
- widget, 'height', 100, 101.2, 102.6, value, 0, '3c'
- )
+ self.checkPixelsParam(widget, 'height', 100, 101.2, 102.6, -100, 0,
'3c')
def test_configure_width(self):
widget = self.create()
- value = -402 if tk_version < (9, 0) else 0
- self.checkPixelsParam(
- widget, 'width', 402, 403.4, 404.6, value, 0, '5i'
- )
+ self.checkPixelsParam(widget, 'width', 402, 403.4, 404.6, -402, 0,
'5i')
def add_configure_tests(*source_classes):
diff --git a/Lib/test/test_ttk/test_widgets.py
b/Lib/test/test_ttk/test_widgets.py
index e738fbff82ed43..8cce9aed9d514f 100644
--- a/Lib/test/test_ttk/test_widgets.py
+++ b/Lib/test/test_ttk/test_widgets.py
@@ -183,7 +183,7 @@ def checkImageParam(self, widget, name):
expected=('image1', 'active', 'image2'))
self.checkParam(widget, name, 'image1 active image2',
expected=('image1', 'active', 'image2'))
- if tk_version < (9, 0):
+ if tk_version < (8, 7):
errmsg = 'image "spam" doesn\'t exist'
else:
errmsg = 'image "spam" does not exist'
@@ -1192,7 +1192,7 @@ def test_traversal(self):
elif sys.platform == 'win32':
focus_identify_as = 'focus'
else:
- focus_identify_as = 'focus' if tk_version < (9,0) else 'padding'
+ focus_identify_as = 'focus' if tk_version < (8, 7) else 'padding'
self.assertEqual(self.nb.identify(5, 5), focus_identify_as)
simulate_mouse_click(self.nb, 5, 5)
self.nb.focus_force()
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]