This is indeed the recommended method.
The long-term plan is to be able to specify a “startup Module” instead of a “startup form”, and have that module explicitly open_form()
the correct form.
(Tech note: The reason that open_form()
within __init__()
doesn’t do what you expect is that Anvil creates the startup form before it opens it. If you call open_form()
in the startup form’s constructor, the new form will open - but as soon as __init__
returns, it will be replaced by the original startup form you’re constructing. The show
event, by contrast, occurs after the form is opened, so open_form()
works as you’d expect.)