# How to retrieve all properties (regular and custom) for all components in a window using scripting in Ignition?

**URL:** <https://forum.inductiveautomation.com/t/how-to-retrieve-all-properties-regular-and-custom-for-all-components-in-a-window-using-scripting-in-ignition/97310>\
**Category:** Ignition\
**Tags:** vision, scripting\
**Created:** [October 16, 2024, 1:37pm UTC](https://forum.inductiveautomation.com/t/how-to-retrieve-all-properties-regular-and-custom-for-all-components-in-a-window-using-scripting-in-ignition/97310 "2024-10-16T13:37:38Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![David\_Felipe\_Vergara](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_felipe_vergara/32/68628_2.png) [@David\_Felipe\_Vergara](https://forum.inductiveautomation.com/u/David_Felipe_Vergara)\
**Post date:** [October 16, 2024, 1:37pm UTC](https://forum.inductiveautomation.com/t/how-to-retrieve-all-properties-regular-and-custom-for-all-components-in-a-window-using-scripting-in-ignition/97310/1 "2024-10-16T13:37:38Z")

</div>

Hello everyone,

I'm working on a project in Ignition and need to retrieve all properties (both regular and custom) of all components within a window. For example, properties like `text`, `data`, `background`, and `font`, not just the custom properties.

Currently, I am using the following code to get all the components of the window:

win = system.gui.getWindow("Screen Name Data Entry")  
comps = win.getRootContainer().getComponents()

However, when I use a for loop and `.getProperties()`, it only returns the custom properties and not the standard ones like `text` or `data`.

Does anyone know how I can list all properties, including both regular and custom, for each component in a window using scripting?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 16, 2024, 2:45pm UTC](https://forum.inductiveautomation.com/t/how-to-retrieve-all-properties-regular-and-custom-for-all-components-in-a-window-using-scripting-in-ignition/97310/2 "2024-10-16T14:45:04Z")

</div>

Consider trying the techniques shown in the `introspect()` function of my [inspect.py](https://www.automation-pros.com/ignition/inspect.py) script module.

More fundamentally, you need to know that jython properties of components are a combination of jython's native "NetBeans" interpretation of java getter and setter methods, plus the custom properties exposed by Ignition's [PyComponentWrapper](https://forum.inductiveautomation.com/search?q=PyComponentWrapper%20%40pturmel%20order%3Alatest).

But that usually yields more properties than are exposed by the designer, since the designer relies on the component author providing a `BeanInfo` class in designer scope that provides necessary metadata for design purposes. If the `inspect.py` functionality doesn't get you what you need, please share more about _ **why** _ you need to do this.

---

<div class="post-metadata">

**Author:** ![David\_Felipe\_Vergara](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_felipe_vergara/32/68628_2.png) [@David\_Felipe\_Vergara](https://forum.inductiveautomation.com/u/David_Felipe_Vergara)\
**Post date:** [October 16, 2024, 4:04pm UTC](https://forum.inductiveautomation.com/t/how-to-retrieve-all-properties-regular-and-custom-for-all-components-in-a-window-using-scripting-in-ignition/97310/3 "2024-10-16T16:04:57Z")

</div>

In this case I want to compare windows and components between different sites. For this I want to obtain all the windows of all the projects (where I have not been able to find a solution either) and once I have all the windows I also want to obtain all their components with all their properties and bindings. For the bindings I can use the interactionController.getPropertyAdapter function but I have not been able to find how to obtain all the properties of each component.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 16, 2024, 4:11pm UTC](https://forum.inductiveautomation.com/t/how-to-retrieve-all-properties-regular-and-custom-for-all-components-in-a-window-using-scripting-in-ignition/97310/4 "2024-10-16T16:11:37Z")

</div>

Unfortunately, you have an extremely difficult task. The closest you can get to this is to use the designer's **shift** -right-click menu to copy each window as XML, then use `diff` or similar tools to compare files.

While this is the best currently possible, it isn't great, as the XML is an undocumented format that is not deterministically ordered (changing bindings changes everything). There is hope that this will improve with v8.3, but there haven't been any IA promises. ( ~~Might get the XML as the on-disk resource format.~~ Unlikely to get the content re-ordered sanely.)

Sorry.

{ Edit: already an option to have the XML on-disk. }

---

<div class="post-metadata">

**Author:** ![David\_Felipe\_Vergara](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/david_felipe_vergara/32/68628_2.png) [@David\_Felipe\_Vergara](https://forum.inductiveautomation.com/u/David_Felipe_Vergara)\
**Post date:** [October 16, 2024, 5:25pm UTC](https://forum.inductiveautomation.com/t/how-to-retrieve-all-properties-regular-and-custom-for-all-components-in-a-window-using-scripting-in-ignition/97310/5 "2024-10-16T17:25:25Z")

</div>

Thank you so much for your time.
