[Python-checkins] IDLE: Simplify DynOptionsMenu __init__code (GH-101371)
miss-islington
webhook-mailer at python.org
Tue Feb 28 01:41:27 EST 2023
https://github.com/python/cpython/commit/d01cf5072be5511595b6d0c35ace6c1b07716f8d
commit: d01cf5072be5511595b6d0c35ace6c1b07716f8d
branch: 3.11
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: miss-islington <31488909+miss-islington at users.noreply.github.com>
date: 2023-02-27T22:41:20-08:00
summary:
IDLE: Simplify DynOptionsMenu __init__code (GH-101371)
Refactor DynOptionMenu's initializer to not copy kwargs dict and use subscripting;
improve its htest.
(cherry picked from commit c41af812c948ec3cb07b2ef7a46a238f5cab3dc2)
Co-authored-by: JosephSBoyle <48555120+JosephSBoyle at users.noreply.github.com>
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