Okay, I would probably do something like this, where you have a dictionary which defines the component name and the attribute that you want to change for that component.
here's the call from the dropdown property change script:
if event.propertyName == 'componentRunning' and event.newValue:
listener = GUI.DropdownIsOpenListener(event.source)
event.source.addPopupMenuListener(listener)
the component that I want to disable when the dropdown is open is bound to (not) dropdownIsOpen but it does not change.
I don't see any issue with your code that would prevent the expected result.
Where are you testing this? If it's in the designer, the component running event won't occur unless preview mode is on prior to the window being opened.
If there is an issue with the listener, it will fail silently. Check for red letter errors in the diagnostic console.