summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2020-07-27 02:14:12 (GMT)
committerGitHub <noreply@github.com>2020-07-27 02:14:12 (GMT)
commit8b052751d32c43540e2786ce0b3f7e4b4d0ae161 (patch)
treeab55bb1b10ba0b1c7cdd4aafe527c3c7c74a9bff
parent6e4975a1c79d8433d9d5b50ff1c655b5b5a2acd2 (diff)
downloadcpython-8b052751d32c43540e2786ce0b3f7e4b4d0ae161.zip
cpython-8b052751d32c43540e2786ce0b3f7e4b4d0ae161.tar.gz
cpython-8b052751d32c43540e2786ce0b3f7e4b4d0ae161.tar.bz2
bpo-41384: Raise TclError in tkinter.OptionMenu (GH-21601)
... when an unknown option is passed. TypeError was being raised because a 2to3 fix was missing. Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu> (cherry picked from commit f1d40f941a6483b1d4ea10f1051ace7b426fb8e7) Co-authored-by: Akuli <akuviljanen17@gmail.com>
-rw-r--r--Lib/tkinter/__init__.py2
-rw-r--r--Lib/tkinter/test/test_tkinter/test_widgets.py4
-rw-r--r--Misc/NEWS.d/next/Library/2020-07-26-21-18-43.bpo-41384.MlzIgV.rst2
3 files changed, 7 insertions, 1 deletions
diff --git a/Lib/tkinter/__init__.py b/Lib/tkinter/__init__.py
index a3378d0..1067ab6 100644
--- a/Lib/tkinter/__init__.py
+++ b/Lib/tkinter/__init__.py
@@ -3965,7 +3965,7 @@ class OptionMenu(Menubutton):
if 'command' in kwargs:
del kwargs['command']
if kwargs:
- raise TclError('unknown option -'+kwargs.keys()[0])
+ raise TclError('unknown option -'+next(iter(kwargs)))
menu.add_command(label=value,
command=_setit(variable, value, callback))
for v in values:
diff --git a/Lib/tkinter/test/test_tkinter/test_widgets.py b/Lib/tkinter/test/test_tkinter/test_widgets.py
index 16e9d93..721e813 100644
--- a/Lib/tkinter/test/test_tkinter/test_widgets.py
+++ b/Lib/tkinter/test/test_tkinter/test_widgets.py
@@ -307,6 +307,10 @@ class OptionMenuTest(MenubuttonTest, unittest.TestCase):
def create(self, default='b', values=('a', 'b', 'c'), **kwargs):
return tkinter.OptionMenu(self.root, None, default, *values, **kwargs)
+ def test_bad_kwarg(self):
+ with self.assertRaisesRegex(TclError, r"^unknown option -image$"):
+ tkinter.OptionMenu(self.root, None, 'b', image='')
+
@add_standard_options(IntegerSizeTests, StandardOptionsTests)
class EntryTest(AbstractWidgetTest, unittest.TestCase):
diff --git a/Misc/NEWS.d/next/Library/2020-07-26-21-18-43.bpo-41384.MlzIgV.rst b/Misc/NEWS.d/next/Library/2020-07-26-21-18-43.bpo-41384.MlzIgV.rst
new file mode 100644
index 0000000..d797374
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2020-07-26-21-18-43.bpo-41384.MlzIgV.rst
@@ -0,0 +1,2 @@
+Raise TclError instead of TypeError when an unknown option is passed to
+tkinter.OptionMenu.