[Python-checkins] IDLE: Simplify DynOptionsMenu __init__code (#101371)

terryjreedy webhook-mailer at python.org
Tue Feb 28 01:12:32 EST 2023


https://github.com/python/cpython/commit/c41af812c948ec3cb07b2ef7a46a238f5cab3dc2
commit: c41af812c948ec3cb07b2ef7a46a238f5cab3dc2
branch: main
author: JosephSBoyle <48555120+JosephSBoyle at users.noreply.github.com>
committer: terryjreedy <tjreedy at udel.edu>
date: 2023-02-28T01:11:52-05:00
summary:

IDLE: Simplify DynOptionsMenu __init__code (#101371)

Refactor DynOptionMenu's initializer to not copy  kwargs dict and use subscripting;
improve its htest.

Co-authored-by: Terry Jan Reedy <tjreedy at udel.edu>

files:
M Lib/idlelib/dynoption.py

diff --git a/Lib/idlelib/dynoption.py b/Lib/idlelib/dynoption.py
index 9c6ffa435a10..d5dfc3eda13f 100644
--- a/Lib/idlelib/dynoption.py
+++ b/Lib/idlelib/dynoption.py
@@ -2,24 +2,19 @@
 OptionMenu widget modified to allow dynamic menu reconfiguration
 and setting of highlightthickness
 """
-import copy
-
 from tkinter import OptionMenu, _setit, StringVar, Button
 
 class DynOptionMenu(OptionMenu):
-    """
-    unlike OptionMenu, our kwargs can include highlightthickness
+    """Add SetMenu and highlightthickness to OptionMenu.
+
+    Highlightthickness adds space around menu button.
     """
     def __init__(self, master, variable, value, *values, **kwargs):
-        # TODO copy value instead of whole dict
-        kwargsCopy=copy.copy(kwargs)
-        if 'highlightthickness' in list(kwargs.keys()):
-            del(kwargs['highlightthickness'])
+        highlightthickness = kwargs.pop('highlightthickness', None)
         OptionMenu.__init__(self, master, variable, value, *values, **kwargs)
-        self.config(highlightthickness=kwargsCopy.get('highlightthickness'))
-        #self.menu=self['menu']
-        self.variable=variable
-        self.command=kwargs.get('command')
+        self['highlightthickness'] = highlightthickness
+        self.variable = variable
+        self.command = kwargs.get('command')
 
     def SetMenu(self,valueList,value=None):
         """
@@ -38,14 +33,15 @@ def _dyn_option_menu(parent):  # htest #
     from tkinter import Toplevel # + StringVar, Button
 
     top = Toplevel(parent)
-    top.title("Tets dynamic option menu")
+    top.title("Test dynamic option menu")
     x, y = map(int, parent.geometry().split('+')[1:])
     top.geometry("200x100+%d+%d" % (x + 250, y + 175))
     top.focus_set()
 
     var = StringVar(top)
     var.set("Old option set") #Set the default value
-    dyn = DynOptionMenu(top,var, "old1","old2","old3","old4")
+    dyn = DynOptionMenu(top, var, "old1","old2","old3","old4",
+                        highlightthickness=5)
     dyn.pack()
 
     def update():
@@ -54,5 +50,6 @@ def update():
     button.pack()
 
 if __name__ == '__main__':
+    # Only module without unittests because of intention to replace.
     from idlelib.idle_test.htest import run
     run(_dyn_option_menu)



More information about the Python-checkins mailing list