Difference between revisions of "Events:CTK-Hackfest-2010/SlicerPythonQt"
From NAMIC Wiki
Line 9: | Line 9: | ||
= Implementation = | = Implementation = | ||
− | + | == CTK Layer == | |
− | + | * qCTKConsoleWidget | |
− | + | * qCTKShellPython | |
− | + | * qCTKAbstractPythonManager: | |
− | + | ** registerPythonQtDecorator, registerClassForPythonQt, registerCPPClassForPythonQt, executeString, getVariable, executeFile, ... | |
− | + | ** also virtual methods: pythonPaths and preInitialization | |
− | + | == Concrete example == | |
− | + | * Slicer superbuild download and patch SVN PythonQt head | |
− | + | * Slicer CMake script pre-compile all slicer .py class | |
− | + | * VTK all wrapped in python and exposed | |
− | + | * qSlicerPythonManager | |
<pre> | <pre> | ||
void qSlicerPythonManager::preInitialization() | void qSlicerPythonManager::preInitialization() |
Revision as of 07:12, 8 March 2010
Home < Events:CTK-Hackfest-2010 < SlicerPythonQtOverview
- All slots/property of QObject are automatically exposed to the python interpreter
- Concept of decorator
- Expose regular cpp method of QObject
- Expose object and method of pure cpp classes
- Complete wrapping of all Qt Classes
- From PythonQt website: In contrast to PyQt , PythonQt is not a complete Python wrapper around the complete Qt functionality. So if you are looking for a way to write complete applications in Python using the Qt GUI, you should use PyQt.
- See http://pythonqt.sourceforge.net/
Implementation
CTK Layer
- qCTKConsoleWidget
- qCTKShellPython
- qCTKAbstractPythonManager:
- registerPythonQtDecorator, registerClassForPythonQt, registerCPPClassForPythonQt, executeString, getVariable, executeFile, ...
- also virtual methods: pythonPaths and preInitialization
Concrete example
- Slicer superbuild download and patch SVN PythonQt head
- Slicer CMake script pre-compile all slicer .py class
- VTK all wrapped in python and exposed
- qSlicerPythonManager
void qSlicerPythonManager::preInitialization() { Superclass::preInitialization(); // Register decorators this->registerPythonQtDecorator(new qSlicerBaseQTBasePythonQtDecorators(this)); qSlicerCoreApplication* app = qSlicerCoreApplication::application(); // Add object to python interpreter context this->addObjectToPythonMain("_qSlicerCoreApplicationInstance", app); // Evaluate application script this->executeFile(app->slicerHome() + "/bin/Python/slicer/slicerqt.py"); }