aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-01-05 13:44:24 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-01-06 09:03:06 +0000
commit09670a8746fa443c4b8271381bf21fc5c993f1bb (patch)
tree39ea18520877ab0d96e742de9030e35070b7452f
parent71a62eb4fa193f9af35c52918ec2dac613f2504a (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.cpp1
-rw-r--r--examples/scriptableapplication/pythonutils.cpp17
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;