PATH:
opt
/
bitninja-python-dojo
/
embedded
/
lib
/
python3.9
/
idlelib
""" 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 """ 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']) 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') def SetMenu(self,valueList,value=None): """ clear and reload the menu with a new set of options. valueList - list of new options value - initial value to set the optionmenu's menubutton to """ self['menu'].delete(0,'end') for item in valueList: self['menu'].add_command(label=item, command=_setit(self.variable,item,self.command)) if value: self.variable.set(value) def _dyn_option_menu(parent): # htest # from tkinter import Toplevel # + StringVar, Button top = Toplevel(parent) top.title("Tets 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.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)
[-] multicall.py
[edit]
[-] redirector.py
[edit]
[-] searchbase.py
[edit]
[-] debugger_r.py
[edit]
[-] debugger.py
[edit]
[-] window.py
[edit]
[-] config_key.py
[edit]
[-] delegator.py
[edit]
[-] help_about.py
[edit]
[-] query.py
[edit]
[-] autoexpand.py
[edit]
[-] mainmenu.py
[edit]
[+]
..
[-] config.py
[edit]
[-] config-keys.def
[edit]
[-] tooltip.py
[edit]
[-] textview.py
[edit]
[+]
Icons
[-] pyshell.py
[edit]
[-] rpc.py
[edit]
[-] NEWS2x.txt
[edit]
[-] README.txt
[edit]
[-] idle.py
[edit]
[-] zzdummy.py
[edit]
[+]
idle_test
[-] undo.py
[edit]
[-] run.py
[edit]
[-] __main__.py
[edit]
[-] debugobj_r.py
[edit]
[-] scrolledlist.py
[edit]
[-] browser.py
[edit]
[-] runscript.py
[edit]
[-] CREDITS.txt
[edit]
[-] percolator.py
[edit]
[-] colorizer.py
[edit]
[-] TODO.txt
[edit]
[-] idle.pyw
[edit]
[-] grep.py
[edit]
[-] squeezer.py
[edit]
[+]
__pycache__
[-] sidebar.py
[edit]
[-] config-main.def
[edit]
[-] editor.py
[edit]
[-] idle.bat
[edit]
[-] NEWS.txt
[edit]
[-] stackviewer.py
[edit]
[-] ChangeLog
[edit]
[-] parenmatch.py
[edit]
[-] extend.txt
[edit]
[-] help.html
[edit]
[-] debugobj.py
[edit]
[-] calltip_w.py
[edit]
[-] replace.py
[edit]
[-] iomenu.py
[edit]
[-] dynoption.py
[edit]
[-] search.py
[edit]
[-] statusbar.py
[edit]
[-] config-extensions.def
[edit]
[-] searchengine.py
[edit]
[-] hyperparser.py
[edit]
[-] config-highlight.def
[edit]
[-] __init__.py
[edit]
[-] zoomheight.py
[edit]
[-] filelist.py
[edit]
[-] pathbrowser.py
[edit]
[-] calltip.py
[edit]
[-] HISTORY.txt
[edit]
[-] configdialog.py
[edit]
[-] macosx.py
[edit]
[-] outwin.py
[edit]
[-] help.py
[edit]
[-] history.py
[edit]
[-] pyparse.py
[edit]
[-] tree.py
[edit]
[-] format.py
[edit]
[-] autocomplete.py
[edit]
[-] autocomplete_w.py
[edit]
[-] codecontext.py
[edit]