diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-01-05 13:44:24 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-01-06 09:03:06 +0000 |
commit | 09670a8746fa443c4b8271381bf21fc5c993f1bb (patch) | |
tree | 39ea18520877ab0d96e742de9030e35070b7452f | |
parent | 71a62eb4fa193f9af35c52918ec2dac613f2504a (diff) |
scriptable application: Actually make the generated module available
A call to PyImport_AppendInittab() before Py_Initialize() is required
to be able to import the module. Previously, the example would only
add the instance of the mainwindow under the "__main__" module.
Task-number: PYSIDE-841
Change-Id: Ib87ddd9fa9e4dbdcf413abe1d9e6273811fc414c
Reviewed-by: Christian Tismer <tismer@stackless.com>
(cherry picked from commit b62040783613568901e76a26799e130632004a7e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | examples/scriptableapplication/mainwindow.cpp | 1 | ||||
-rw-r--r-- | examples/scriptableapplication/pythonutils.cpp | 17 |
2 files changed, 8 insertions, 10 deletions
diff --git a/examples/scriptableapplication/mainwindow.cpp b/examples/scriptableapplication/mainwindow.cpp index 315ea227e..15c8b59f0 100644 --- a/examples/scriptableapplication/mainwindow.cpp +++ b/examples/scriptableapplication/mainwindow.cpp @@ -67,6 +67,7 @@ #include <QtCore/QTextStream> static const char defaultScript[] = R"( +import AppLib print("Hello, world") mainWindow.testFunction1() )"; diff --git a/examples/scriptableapplication/pythonutils.cpp b/examples/scriptableapplication/pythonutils.cpp index eef2fada7..18ac35112 100644 --- a/examples/scriptableapplication/pythonutils.cpp +++ b/examples/scriptableapplication/pythonutils.cpp @@ -64,11 +64,8 @@ /* from AppLib bindings */ -#if PY_MAJOR_VERSION >= 3 - extern "C" PyObject *PyInit_AppLib(); -#else - extern "C" void initAppLib(); -#endif +extern "C" PyObject *PyInit_AppLib(); +static const char moduleName[] = "AppLib"; // This variable stores all Python types exported by this module. extern PyTypeObject **SbkAppLibTypes; @@ -111,15 +108,15 @@ State init() if (qEnvironmentVariableIsSet(virtualEnvVar)) initVirtualEnvironment(); + if (PyImport_AppendInittab(moduleName, PyInit_AppLib) == -1) { + qWarning("Failed to add the module '%s' to the table of built-in modules.", moduleName); + return state; + } + Py_Initialize(); qAddPostRoutine(cleanup); state = PythonInitialized; -#if PY_MAJOR_VERSION >= 3 const bool pythonInitialized = PyInit_AppLib() != nullptr; -#else - const bool pythonInitialized = true; - initAppLib(); -#endif const bool pyErrorOccurred = PyErr_Occurred() != nullptr; if (pythonInitialized && !pyErrorOccurred) { state = AppModuleLoaded; |