diff --git a/src/Gui/WidgetFactory.cpp b/src/Gui/WidgetFactory.cpp index 99e3f7ef29..4207d26070 100644 --- a/src/Gui/WidgetFactory.cpp +++ b/src/Gui/WidgetFactory.cpp @@ -680,7 +680,10 @@ Py::Object PySideUicModule::loadUiType(const Py::Tuple& args) str << "import pyside2uic\n" << "from PySide2 import QtCore, QtGui, QtWidgets\n" << "import xml.etree.ElementTree as xml\n" - << "from cStringIO import StringIO\n" + << "try:\n" + << " from cStringIO import StringIO\n" + << "except:\n" + << " from io import StringIO\n" << "\n" << "uiFile = \"" << file.c_str() << "\"\n" << "parsed = xml.parse(uiFile)\n" @@ -691,7 +694,7 @@ Py::Object PySideUicModule::loadUiType(const Py::Tuple& args) << " frame = {}\n" << " pyside2uic.compileUi(f, o, indent=0)\n" << " pyc = compile(o.getvalue(), '', 'exec')\n" - << " exec pyc in frame\n" + << " exec(pyc, frame)\n" << " #Fetch the base_class and form class based on their type in the xml from designer\n" << " form_class = frame['Ui_%s'%form_class]\n" << " base_class = eval('QtWidgets.%s'%widget_class)\n"; @@ -699,7 +702,10 @@ Py::Object PySideUicModule::loadUiType(const Py::Tuple& args) str << "import pysideuic\n" << "from PySide import QtCore, QtGui\n" << "import xml.etree.ElementTree as xml\n" - << "from cStringIO import StringIO\n" + << "try:\n" + << " from cStringIO import StringIO\n" + << "except:\n" + << " from io import StringIO\n" << "\n" << "uiFile = \"" << file.c_str() << "\"\n" << "parsed = xml.parse(uiFile)\n" @@ -710,7 +716,7 @@ Py::Object PySideUicModule::loadUiType(const Py::Tuple& args) << " frame = {}\n" << " pysideuic.compileUi(f, o, indent=0)\n" << " pyc = compile(o.getvalue(), '', 'exec')\n" - << " exec pyc in frame\n" + << " exec(pyc, frame)\n" << " #Fetch the base_class and form class based on their type in the xml from designer\n" << " form_class = frame['Ui_%s'%form_class]\n" << " base_class = eval('QtGui.%s'%widget_class)\n";