Embedding, passing a wxWindow to wxPython

In the embedded sample I found

PyObject* arg = wxPyConstructObject((void*)parent, "wxWindow", false);
wxASSERT(arg != NULL);
PyObject* tuple = PyTuple_New(1);
PyTuple_SET_ITEM(tuple, 0, arg);
result = PyObject_CallObject(func, tuple); 

Trying to understand why a tuple was used here and not just the arg.

That’s the way the API works. It’s how the API supports passing any number of args to a Python callable. See: Call Protocol — Python 3.11.3 documentation