aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_tkinter
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2024-06-22 16:19:42 +0300
committerGitHub <noreply@github.com>2024-06-22 16:19:42 +0300
commita046c848c1df0cf98092e9696594d3fb836e3530 (patch)
tree7c70013815b5840392bf50b3362d0854f6d52a13 /Lib/test/test_tkinter
parent974a978631bfbfa6f617e927d5eaa82b06694ae5 (diff)
downloadcpython-a046c848c1df0cf98092e9696594d3fb836e3530.tar.gz
cpython-a046c848c1df0cf98092e9696594d3fb836e3530.zip
gh-120873: Add tests for new widget options in Tk 8.7 (GH-120877)
Diffstat (limited to 'Lib/test/test_tkinter')
-rw-r--r--Lib/test/test_tkinter/test_widgets.py22
-rw-r--r--Lib/test/test_tkinter/widget_tests.py39
2 files changed, 46 insertions, 15 deletions
diff --git a/Lib/test/test_tkinter/test_widgets.py b/Lib/test/test_tkinter/test_widgets.py
index 64ea87e647c..9ea764ca2a3 100644
--- a/Lib/test/test_tkinter/test_widgets.py
+++ b/Lib/test/test_tkinter/test_widgets.py
@@ -61,11 +61,11 @@ class AbstractToplevelTest(AbstractWidgetTest, PixelSizeTests):
@add_standard_options(StandardOptionsTests)
class ToplevelTest(AbstractToplevelTest, unittest.TestCase):
OPTIONS = (
- 'background', 'borderwidth',
+ 'background', 'backgroundimage', 'borderwidth',
'class', 'colormap', 'container', 'cursor', 'height',
'highlightbackground', 'highlightcolor', 'highlightthickness',
'menu', 'padx', 'pady', 'relief', 'screen',
- 'takefocus', 'use', 'visual', 'width',
+ 'takefocus', 'tile', 'use', 'visual', 'width',
)
def create(self, **kwargs):
@@ -104,10 +104,10 @@ class ToplevelTest(AbstractToplevelTest, unittest.TestCase):
@add_standard_options(StandardOptionsTests)
class FrameTest(AbstractToplevelTest, unittest.TestCase):
OPTIONS = (
- 'background', 'borderwidth',
+ 'background', 'backgroundimage', 'borderwidth',
'class', 'colormap', 'container', 'cursor', 'height',
'highlightbackground', 'highlightcolor', 'highlightthickness',
- 'padx', 'pady', 'relief', 'takefocus', 'visual', 'width',
+ 'padx', 'pady', 'relief', 'takefocus', 'tile', 'visual', 'width',
)
def create(self, **kwargs):
@@ -338,7 +338,8 @@ class EntryTest(AbstractWidgetTest, unittest.TestCase):
'highlightbackground', 'highlightcolor', 'highlightthickness',
'insertbackground', 'insertborderwidth',
'insertofftime', 'insertontime', 'insertwidth',
- 'invalidcommand', 'justify', 'readonlybackground', 'relief',
+ 'invalidcommand', 'justify', 'placeholder', 'placeholderforeground',
+ 'readonlybackground', 'relief',
'selectbackground', 'selectborderwidth', 'selectforeground',
'show', 'state', 'takefocus', 'textvariable',
'validate', 'validatecommand', 'width', 'xscrollcommand',
@@ -432,8 +433,8 @@ class SpinboxTest(EntryTest, unittest.TestCase):
'increment',
'insertbackground', 'insertborderwidth',
'insertofftime', 'insertontime', 'insertwidth',
- 'invalidcommand', 'justify', 'relief', 'readonlybackground',
- 'repeatdelay', 'repeatinterval',
+ 'invalidcommand', 'justify', 'placeholder', 'placeholderforeground',
+ 'relief', 'readonlybackground', 'repeatdelay', 'repeatinterval',
'selectbackground', 'selectborderwidth', 'selectforeground',
'state', 'takefocus', 'textvariable', 'to',
'validate', 'validatecommand', 'values',
@@ -1176,10 +1177,6 @@ class ScrollbarTest(AbstractWidgetTest, unittest.TestCase):
def create(self, **kwargs):
return tkinter.Scrollbar(self.root, **kwargs)
- def test_configure_activerelief(self):
- widget = self.create()
- self.checkReliefParam(widget, 'activerelief')
-
def test_configure_elementborderwidth(self):
widget = self.create()
self.checkPixelsParam(widget, 'elementborderwidth', 4.3, 5.6, '1m')
@@ -1386,6 +1383,7 @@ class PanedWindowTest(AbstractWidgetTest, unittest.TestCase):
class MenuTest(AbstractWidgetTest, unittest.TestCase):
OPTIONS = (
'activebackground', 'activeborderwidth', 'activeforeground',
+ 'activerelief',
'background', 'borderwidth', 'cursor',
'disabledforeground', 'font', 'foreground',
'postcommand', 'relief', 'selectcolor', 'takefocus',
@@ -1401,6 +1399,8 @@ class MenuTest(AbstractWidgetTest, unittest.TestCase):
i = widget.index('none')
self.assertIsNone(i)
+ test_configure_activerelief = requires_tk(8, 7)(StandardOptionsTests.test_configure_activerelief)
+
def test_configure_postcommand(self):
widget = self.create()
self.checkCommandParam(widget, 'postcommand')
diff --git a/Lib/test/test_tkinter/widget_tests.py b/Lib/test/test_tkinter/widget_tests.py
index eef2efb3856..8ab2f742450 100644
--- a/Lib/test/test_tkinter/widget_tests.py
+++ b/Lib/test/test_tkinter/widget_tests.py
@@ -2,7 +2,7 @@
import re
import tkinter
-from test.test_tkinter.support import (AbstractTkTest, tk_version,
+from test.test_tkinter.support import (AbstractTkTest, requires_tk, tk_version,
pixels_conv, tcl_obj_eq)
import test.support
@@ -17,6 +17,7 @@ class AbstractWidgetTest(AbstractTkTest):
_clip_highlightthickness = True
_clip_pad = False
_clip_borderwidth = False
+ _allow_empty_justify = False
@property
def scaling(self):
@@ -200,6 +201,7 @@ class AbstractWidgetTest(AbstractTkTest):
aliases = {
'bd': 'borderwidth',
'bg': 'background',
+ 'bgimg': 'backgroundimage',
'fg': 'foreground',
'invcmd': 'invalidcommand',
'vcmd': 'validatecommand',
@@ -242,6 +244,10 @@ class StandardOptionsTests:
widget = self.create()
self.checkColorParam(widget, 'activeforeground')
+ def test_configure_activerelief(self):
+ widget = self.create()
+ self.checkReliefParam(widget, 'activerelief')
+
def test_configure_anchor(self):
widget = self.create()
self.checkEnumParam(widget, 'anchor',
@@ -253,6 +259,11 @@ class StandardOptionsTests:
if 'bg' in self.OPTIONS:
self.checkColorParam(widget, 'bg')
+ @requires_tk(8, 7)
+ def test_configure_backgroundimage(self):
+ widget = self.create()
+ self.checkImageParam(widget, 'backgroundimage')
+
def test_configure_bitmap(self):
widget = self.create()
self.checkParam(widget, 'bitmap', 'questhead')
@@ -299,8 +310,10 @@ class StandardOptionsTests:
widget = self.create()
self.checkParam(widget, 'font',
'-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*')
- self.checkInvalidParam(widget, 'font', '',
- errmsg='font "" doesn\'t exist')
+ is_ttk = widget.__class__.__module__ == 'tkinter.ttk'
+ if not is_ttk:
+ self.checkInvalidParam(widget, 'font', '',
+ errmsg='font "" doesn\'t exist')
def test_configure_foreground(self):
widget = self.create()
@@ -355,7 +368,10 @@ class StandardOptionsTests:
def test_configure_justify(self):
widget = self.create()
- self.checkEnumParam(widget, 'justify', 'left', 'right', 'center',
+ values = ('left', 'right', 'center')
+ if self._allow_empty_justify:
+ values += ('',)
+ self.checkEnumParam(widget, 'justify', *values,
fullname='justification')
def test_configure_orient(self):
@@ -379,6 +395,16 @@ class StandardOptionsTests:
self.checkParam(widget, 'pady', -2, expected=expected,
conv=self._conv_pad_pixels)
+ @requires_tk(8, 7)
+ def test_configure_placeholder(self):
+ widget = self.create()
+ self.checkParam(widget, 'placeholder', 'xxx')
+
+ @requires_tk(8, 7)
+ def test_configure_placeholderforeground(self):
+ widget = self.create()
+ self.checkColorParam(widget, 'placeholderforeground')
+
def test_configure_relief(self):
widget = self.create()
self.checkReliefParam(widget, 'relief')
@@ -424,6 +450,11 @@ class StandardOptionsTests:
var = tkinter.StringVar(self.root)
self.checkVariableParam(widget, 'textvariable', var)
+ @requires_tk(8, 7)
+ def test_configure_tile(self):
+ widget = self.create()
+ self.checkBooleanParam(widget, 'tile')
+
def test_configure_troughcolor(self):
widget = self.create()
self.checkColorParam(widget, 'troughcolor')