o =?h@sXdZddlmZmZmZmZGdddeZddZedkr*ddl m Z e ed Sd S) zd OptionMenu widget modified to allow dynamic menu reconfiguration and setting of highlightthickness ) OptionMenu_setit StringVarButtonc@s"eZdZdZddZdddZdS) DynOptionMenuzmAdd SetMenu and highlightthickness to OptionMenu. Highlightthickness adds space around menu button. cOsH|dd}tj||||g|Ri|||d<||_|d|_dS)Nhighlightthicknesscommand)popr__init__variablegetr)selfZmasterr valuevalueskwargsrr8/opt/alt/python310/lib64/python3.10/idlelib/dynoption.pyr s zDynOptionMenu.__init__NcCsP|ddd|D]}|dj|t|j||jdq |r&|j|dSdS)z 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 Zmenurend)ZlabelrN)deleteZ add_commandrr rset)r Z valueListritemrrrSetMenus zDynOptionMenu.SetMenu)N)__name__ __module__ __qualname____doc__r rrrrrrsrc sddlm}||}|dtt|ddd\}}|d|d|df|t|}| d t ||d d d d dd fdd}t |d|d}| dS)Nr)ToplevelzTest dynamic option menu+z 200x100+%d+%dzOld option setZold1Zold2Zold3Zold4)rcsjgddddS)N)Znew1Znew2Znew3Znew4znew option set)r)rrZdynrrupdate/sz _dyn_option_menu..updatezChange option set)textr) tkinterrtitlemapintZgeometrysplitZ focus_setrrrZpackr)parentrtopxyvarr#Zbuttonrr"r_dyn_option_menu s      r/__main__)runN) rr%rrrrrr/rZidlelib.idle_test.htestr1rrrrs