The main interface to the Python Qt binding, realized as a singleton. More...
#include <PythonQt.h>
signal
of obj
and connect it to a callable objectname
in module
signal
of obj
signal
of obj
and connect it to a callable receiver
signal
of obj
qObject
to the python object
as a variable with name
(it can be removed via clearVariable)
name
of the object
, returns an invalid QVariant on error
name
of the object
as QVariant of type PythonQtObjectPtr, returns an invalid QVariant on error
object
, optional looking inside of an object objectname
object
objectname
methodName
of a wrapped c++ type referenced by typeName
callable
in the scope of object, returns the result converted to a QVariant
The main interface to the Python Qt binding, realized as a singleton.
Use PythonQt::init() to initialize the singleton and PythonQt::self() to access it. While there can be only one PythonQt instance, you can have any number of Python context to do scripting in. One possibility is to use createModuleFromFile(), createModuleFromScript() or createUniqueModule() to get a context that is separated from the other contexts. Alternatively you can use Python dicts as contexts for script evaluation, but you will need to populate the dict with the builtins instance to have all Pythons available when running code in the scope of a dict.
Definition at line 169 of file PythonQt.h.
◆ ProfilingCBcallback for profiling. className and methodName are only passed when state == Enter, otherwise they are NULL.
Definition at line 227 of file PythonQt.h.
◆ InitFlagsflags that can be passed to PythonQt::init()
Enumerator RedirectStdOut< sets if the std out/err is redirected to pythonStdOut() and pythonStdErr() signals
IgnoreSiteModule< sets if Python should ignore the site module
ExternalHelp< sets if help() calls on PythonQt modules are forwarded to the pythonHelpRequest() signal
PythonAlreadyInitialized< sets that PythonQt should not can PyInitialize, since it is already done
Definition at line 176 of file PythonQt.h.
176 {
181 };
@ RedirectStdOut
< sets if the std out/err is redirected to pythonStdOut() and pythonStdErr() signals
@ IgnoreSiteModule
< sets if Python should ignore the site module
@ PythonAlreadyInitialized
< sets that PythonQt should not can PyInitialize, since it is already done
@ ExternalHelp
< sets if help() calls on PythonQt modules are forwarded to the pythonHelpRequest() signal
◆ ObjectTypedefines the object types for introspection
Enumerator Class Function Variable Module Anything CallOverloadsDefinition at line 247 of file PythonQt.h.
◆ ProfilingCallbackStateenum for profiling callback
Definition at line 220 of file PythonQt.h.
◆ TypeSlotsflags that tell PythonQt which operators to expect on the registered type
Enumerator Type_Add Type_Subtract Type_Multiply Type_Divide Type_Mod Type_And Type_Or Type_Xor Type_LShift Type_RShift Type_InplaceAdd Type_InplaceSubtract Type_InplaceMultiply Type_InplaceDivide Type_InplaceMod Type_InplaceAnd Type_InplaceOr Type_InplaceXor Type_InplaceLShift Type_InplaceRShift Type_Length Type_MappingSetItem Type_MappingGetItem Type_EnterExit Type_Invert Type_RichCompare Type_NonZeroDefinition at line 184 of file PythonQt.h.
184 {
195
206
210
212
216
217 };
◆ addClassDecorators() void PythonQt::addClassDecorators ( QObject * o )add an object whose slots will be used as decorator slots for class objects (ownership is passed to PythonQt)
The slots need to follow the following convention:
This will add:
this will add the object both as class and instance decorator (ownership is passed to PythonQt)
◆ addInstanceDecorators() void PythonQt::addInstanceDecorators ( QObject * o )add an object whose slots will be used as decorator slots for other QObjects or CPP classes. The slots need to follow the convention that the first argument is a pointer to the wrapped object. (ownership is passed to PythonQt)
Example:
A slot with the signature
PyObject * PythonQtConvertPairToPython(const void *inPair, int metaTypeId)
will extend QWidget instances (and derived classes) with a "bool doSomething(int a)" slot that will be called with the concrete instance as first argument. So in Python you can now e.g. call
without QWidget really having this method. This allows to easily make normal methods of Qt classes callable by forwarding them with such decorator slots or to make CPP classes (which are not derived from QObject) callable from Python.
◆ addObject()add the given qObject
to the python object
as a variable with name
(it can be removed via clearVariable)
add a parent class relation to the given
typeName, the upcastingOffset is needed for multiple inheritance and can be calculated using PythonQtUpcastingOffset<type,parentType>(), which also verifies that type is really derived from parentType. Returns false if the typeName was not yet registered.
add a handler for polymorphic downcasting
◆ addSignalHandler() [1/2]add a signal handler to the given signal
of obj
and connect it to a callable objectname
in module
add a signal handler to the given signal
of obj
and connect it to a callable receiver
prepend a path to sys.path to allow importing from it
◆ addVariable()add the given variable to the object
◆ addWrapperFactory() [1/2]add the given factory to PythonQt (ownership stays with caller)
◆ addWrapperFactory() [2/2]add the given factory to PythonQt (ownership stays with caller)
◆ call() [1/2]call the given python object, returns the result converted to a QVariant
◆ call() [2/2]call the given python callable
in the scope of object, returns the result converted to a QVariant
call the given python object, returns the result as new PyObject
◆ cleanup() ◆ clearError() void PythonQt::clearError ( ) ◆ clearNotFoundCachedMembers() void PythonQt::clearNotFoundCachedMembers ( )clear all NotFound entries on all class infos, to ensure that newly loaded wrappers can add methods even when the object was wrapped by PythonQt before the wrapper was loaded
◆ createModuleFromFile()creates the new module name
and evaluates the given file in the context of that module If the script
is empty, the module contains no initial code. You can use evalScript/evalCode to add code to a module later on. The user needs to make sure that the name
is unique in the python module dictionary.
creates the new module name
and evaluates the given script in the context of that module. If the script
is empty, the module contains no initial code. You can use evalScript/evalCode to add code to a module later on. The user needs to make sure that the name
is unique in the python module dictionary.
create a uniquely named module, you can use evalFile or evalScript to populate the module with script code
◆ evalCode()evaluates the given code and returns the result value (use Py_Compile etc. to create pycode from string) If pycode is NULL, a python error is printed.
◆ evalFile()evaluates the given script code from file
◆ evalScript() [1/2]evaluates the given script code in context of given globals and locals and returns the result value
◆ evalScript() [2/2]evaluates the given script code and returns the result value
◆ getImporterIgnorePaths()get paths that the importer should ignore
◆ getMainModule()get the main module of python
◆ getNativeVariable()get the variable with the name
of the object
as QVariant of type PythonQtObjectPtr, returns an invalid QVariant on error
returns the return type of the method methodName
of a wrapped c++ type referenced by typeName
returns the return type of the method of a wrapped c++ object referenced by objectname
get the variable with the name
of the object
, returns an invalid QVariant on error
return true if handleError() has been called and an error occurred.
◆ handleError()handle a python error, call this when a python function fails. If no error occurred, it returns false. The error is currently just output to the python stderr, future version might implement better trace printing
◆ helpCalled()called by internal help methods
◆ importInterface()get access to the file importer (if set)
◆ importModule()import the given module and return a reference to it (useful to import e.g. "sys" and call something on it) If a module is already imported, this returns the already imported module.
◆ init()initialize the python qt binding (flags are a or combination of PythonQt::InitFlags), if pythonQtModuleName
is given it defines the name of the python module that PythonQt will add, otherwise "PythonQt" is used. This can be used to e.g. pass in PySide or PyQt4 to make it more compatible.
this installs the default QFile importer (which effectively does a setImporter(NULL)) (without calling setImporter or installDefaultImporter at least once, the default python import mechanism is in place) the default importer allows to import files from anywhere QFile can read from, including the Qt resource system using ":". Keep in mind that you need to extend "sys.path" with ":" to be able to import from the Qt resources.
Definition at line 539 of file PythonQt.h.
void setImporter(PythonQtImportFileInterface *importInterface)
◆ introspection()read vars etc. in scope of an object
, optional looking inside of an object objectname
read vars etc. in scope of the given object
read vars etc. in scope of the type object called typename
. First the typename of the form module.type is split into module and type. Then the module is looked up in sys.modules. If the module or type is not found there, then the type is looked up in the builtin module.
returns the found callable object or NULL
returns the found object or NULL
overwrite the python sys path (call this directly after PythonQt::init() if you want to change the std python sys path)
◆ parseFile()parses the given file (using PythonQt's own import mechanism) and returns the python code object, this can then be used to call evalCode()
◆ parseFileWithPythonLoaders()Parses the given file and returns the python code object, this can then be used to call evalCode() It uses Python's importlib machinery to load the file's code and supports source and sourceless loading and generation of cache files. This method is PY3K only!
◆ priv() ◆ pythonHelpRequestemitted when help() is called on a PythonQt object and ExternalHelp
is enabled
emitted when python outputs something to stderr (and redirection is turned on)
◆ pythonStdOutemitted when python outputs something to stdout (and redirection is turned on)
◆ qObjectMissingAttributeCallback()call the callback if it is set
◆ qObjectNoLongerWrappedCB() static void PythonQt::qObjectNoLongerWrappedCB ( QObject * o ) staticcall the callback if it is set
◆ registerClass()registers a QObject derived class to PythonQt (this is implicitly called by addObject as well)
◆ registerCPPClass()add a wrapper object for the given QMetaType typeName, also does an addClassDecorators() to add constructors for variants (ownership of wrapper is passed to PythonQt)
Make sure that you have done a qRegisterMetaType first, if typeName is a user type!
This will add a wrapper object that is used to make calls to the given classname typeName
. All slots that take a pointer to typeName as the first argument will be callable from Python on a variant object that contains such a type.
as an alternative to registerClass, you can tell PythonQt the names of QObject derived classes and it will register the classes when it first sees a pointer to such a derived class
◆ removeSignalHandler() [1/2]remove a signal handler from the given signal
of obj
remove a signal handler from the given signal
of obj
globally removes all signal handlers (connections between QObjects and Python).
◆ removeVariable()remove the given variable
◆ removeWrapperFactory() [1/2]remove the wrapper factory
◆ removeWrapperFactory() [2/2]remove the wrapper factory
◆ self()get the singleton instance
◆ setEnableThreadSupport()Enable GIL and thread state handling (turned off by default). If you want to use Python threading, you have to call this with true early in your main thread, before you launch any threads in Python. It can be called before or after PythonQt::init().
◆ setImporter()replace the internal import implementation and use the supplied interface to load files (both py and pyc files) (this method should be called directly after initialization of init() and before calling overwriteSysPath(). On the first call to this method, it will install a generic PythonQt importer in Pythons "path_hooks". This is not reversible, so even setting setImporter(NULL) afterwards will keep the custom PythonQt importer with a QFile default import interface. Subsequent python import calls will make use of the passed importInterface which forwards all import calls to the given importInterface
. Passing NULL will install a default QFile importer. (importInterface
ownership stays with caller)
set paths that the importer should ignore
◆ setModuleImportPath()sets the path list of a module to the given list (important for local imports)
◆ setProfilingCallback()sets a callback that is called before and after function calls for profiling
◆ setQObjectMissingAttributeCallback()set a callback that is called when a QObject does not have a specific attribute.
◆ setQObjectNoLongerWrappedCallback()set a callback that is called when a QObject with parent == NULL is no longer wrapped by PythonQt
◆ setQObjectWrappedCallback()set a callback that is called when a QObject with parent == NULL is wrapped by PythonQt
◆ setRedirectStdInCallback()Overwrite default handling of stdin using a custom callback. It internally backup the original 'sys.stdin' into 'sys.pythonqt_original_stdin'
◆ setRedirectStdInCallbackEnabled() void PythonQt::setRedirectStdInCallbackEnabled ( bool enabled )Enable or disable stdin custom callback. It resets 'sys.stdin' using either 'sys.pythonqt_stdin' or 'sys.pythonqt_original_stdin'
◆ setSystemExitExceptionHandlerEnabled() void PythonQt::setSystemExitExceptionHandlerEnabled ( bool value )if set to true, the systemExitExceptionRaised signal will be emitted if exception SystemExit is caught
The documentation for this class was generated from the following file:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4