diff options
Diffstat (limited to 'Lib/idlelib/dynOptionMenuWidget.py')
| -rw-r--r-- | Lib/idlelib/dynOptionMenuWidget.py | 28 | 
1 files changed, 25 insertions, 3 deletions
| diff --git a/Lib/idlelib/dynOptionMenuWidget.py b/Lib/idlelib/dynOptionMenuWidget.py index 922de96..515b4ba 100644 --- a/Lib/idlelib/dynOptionMenuWidget.py +++ b/Lib/idlelib/dynOptionMenuWidget.py @@ -2,16 +2,15 @@  OptionMenu widget modified to allow dynamic menu reconfiguration  and setting of highlightthickness  """ -from tkinter import OptionMenu -from tkinter import _setit  import copy +from tkinter import OptionMenu, _setit, StringVar, Button  class DynOptionMenu(OptionMenu):      """      unlike OptionMenu, our kwargs can include highlightthickness      """      def __init__(self, master, variable, value, *values, **kwargs): -        #get a copy of kwargs before OptionMenu.__init__ munges them +        # TODO copy value instead of whole dict          kwargsCopy=copy.copy(kwargs)          if 'highlightthickness' in list(kwargs.keys()):              del(kwargs['highlightthickness']) @@ -33,3 +32,26 @@ class DynOptionMenu(OptionMenu):                      command=_setit(self.variable,item,self.command))          if value:              self.variable.set(value) + +def _dyn_option_menu(parent):  # htest # +    from tkinter import Toplevel + +    top = Toplevel() +    top.title("Tets dynamic option menu") +    top.geometry("200x100+%d+%d" % (parent.winfo_rootx() + 200, +                  parent.winfo_rooty() + 150)) +    top.focus_set() + +    var = StringVar(top) +    var.set("Old option set") #Set the default value +    dyn = DynOptionMenu(top,var, "old1","old2","old3","old4") +    dyn.pack() + +    def update(): +        dyn.SetMenu(["new1","new2","new3","new4"], value="new option set") +    button = Button(top, text="Change option set", command=update) +    button.pack() + +if __name__ == '__main__': +    from idlelib.idle_test.htest import run +    run(_dyn_option_menu) | 
