summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/idlelib/dynoption.py25
1 files changed, 11 insertions, 14 deletions
diff --git a/Lib/idlelib/dynoption.py b/Lib/idlelib/dynoption.py
index 9c6ffa4..d5dfc3e 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 _dyn_option_menu(parent): # htest #
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)