Accessing a variable on another form without using get_open_form or self.parent

I think the ‘Globals’ approach is still the right way of doing this. To take a step back, if taking this approach, you should think of your form as representing the state of your data, and that data should be stored in Globals (and ONLY stored in Globals), materialized through bindings to the Global data.

So, for example, you can add the following to Globals:

my_state = dict()

registered_forms = []

def update_forms():
    for form in registered_forms:
        form.refresh_data_bindings()

And in each form where you want to show or interact with state, you make use of bindings with write-back where needed. Append any form that reflects state (self) to the registered_forms. Whenever you make a change to state, you call that Globals function, and the registered forms updated. Here’s an example:

Example

There’s good discussion here: