aboutsummaryrefslogtreecommitdiffstats
path: root/examples/scriptableapplication
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-01-05 13:44:24 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2021-01-06 08:51:28 +0100
commitb62040783613568901e76a26799e130632004a7e (patch)
treeedb38100c2e21f7b92cc49f6cd8874a381342d33 /examples/scriptableapplication
parent50a30e50ba5edd2cdeefe3118e0a0f7e79e3732f (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. Pick-to: 6.0 Task-number: PYSIDE-841 Change-Id: Ib87ddd9fa9e4dbdcf413abe1d9e6273811fc414c Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'examples/scriptableapplication')
-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;