# PyObject Documentation

**URL:** <https://forum.inductiveautomation.com/t/pyobject-documentation/12766>\
**Category:** General Discussion\
**Created:** [March 9, 2017, 4:48am UTC](https://forum.inductiveautomation.com/t/pyobject-documentation/12766 "2017-03-09T04:48:49Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dave\_Young](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dave_young/32/3466_2.png) [@Dave\_Young](https://forum.inductiveautomation.com/u/Dave_Young)\
**Post date:** [March 9, 2017, 4:48am UTC](https://forum.inductiveautomation.com/t/pyobject-documentation/12766/1 "2017-03-09T04:48:49Z")

</div>

Dose anyone know where I can find documentation for python objects returned from functions? For example system.gui.getWindow() returns an object of type PyObject according to the [documentation](https://docs.inductiveautomation.com/display/DOC79/system.gui.getWindow) but I can’t find any information on the object that is returned.

At the bottom of [this page](https://support.inductiveautomation.com/usermanuals/ignition/index.html?working_with_components.htm) it shows that the window object has some functions to set size and location. What else does it have? How can I find out?

---

<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:** [March 9, 2017, 1:03pm UTC](https://forum.inductiveautomation.com/t/pyobject-documentation/12766/2 "2017-03-09T13:03:22Z")

</div>

Technically, it is a PyObject wrapping an [FPMIWindow](http://files.inductiveautomation.com/sdk/javadoc/ignition79/790-beta1/com/inductiveautomation/factorypmi/application/FPMIWindow.html). Jython needs PyObjects in the scripting environment, and Java objects (pretty much everything in Ignition) are automatically supported by “wrapping” them with [Py.java2py()](http://www.jython.org/javadoc/org/python/core/Py.html#java2py(java.lang.Object)). Note that FPMIWindow is a subclass of Swing’s [JInternalFrame](http://docs.oracle.com/javase/8/docs/api/javax/swing/JInternalFrame.html), allowing you to use Swing methods, too.  
You can get a headstart on all of this with my introspection script shown in [this topic](https://inductiveautomation.com/forum/viewtopic.php?f=70&t=13566).

---

<div class="post-metadata">

**Author:** ![nmudge](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nmudge/32/3394_2.png) [@nmudge](https://forum.inductiveautomation.com/u/nmudge)\
**Post date:** [March 9, 2017, 2:10pm UTC](https://forum.inductiveautomation.com/t/pyobject-documentation/12766/3 "2017-03-09T14:10:08Z")

</div>

You can also use the [Graphical Object Inspector Tool](http://nickmudge.info/post/graphical-object-inspector-in-ignition) to look at the various objects in Ignition and find out what methods they have etc.

Best,

---

<div class="post-metadata">

**Author:** ![Dave\_Young](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dave_young/32/3466_2.png) [@Dave\_Young](https://forum.inductiveautomation.com/u/Dave_Young)\
**Post date:** [March 21, 2017, 4:09am UTC](https://forum.inductiveautomation.com/t/pyobject-documentation/12766/4 "2017-03-21T04:09:13Z")

</div>

Thanks for the replies. Not the easy answer I was hoping for but I should be able to work it out from here.

Cheers

---

<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:** [March 21, 2017, 12:01pm UTC](https://forum.inductiveautomation.com/t/pyobject-documentation/12766/5 "2017-03-21T12:01:33Z")

</div>

One nuance that’s not well documented in Jython that might help: the java2py() wrapper method recognizes NetBeans-style getter and setter methods and presents them as properties of the wrapped object. That is, anywhere you’d use:`.... wrappedJavaObject.getSomeValue()
wrappedJavaObject.setSomeValue(newValue)`can by abbreviated:`.... wrappedJavaObject.someValue
wrappedJavaObject.someValue = newValue`Note the camelcase transformation.  
One other NetBeans rule: getters for booleans are expected to be named .isSomeValue(), not .getSomeValue(). If you use jython’s dir() function on a wrapped object, you’ll see all of these ‘extra’ properties.
