PyQt5(以及一般的SIP生成模块)的一个重要特性是能够在其上构建其他扩展模块。 QScintilla就是这样一个例子。
PyQt5提供了一个可供其他模块使用的扩展API。这具有共享代码并强制执行一致行为的优点。部分API可以从Python访问,部分可以从C ++访问。
API的Python部分可以通过QtCore 模块访问,并且通常由扩展模块的PyQt5的 configure.py使用。
API由PyQt5.QtCore.PYQT_CONFIGURATION
一个描述PyQt5配置方式的dict 组成。目前它包含一个值sip_flags
,该值是一个字符串,包含由configure.py 传递给sip可执行文件 的-t
和-x
标志。其他扩展模块必须在其配置中使用相同的标志。
SIP v4的sipconfig模块也提供此信息。但是,SIP v5不会实现此模块。
C ++ API是一组函数。通过sipImportSymbol()
使用所需功能的名称调用SIP的功能来获得每个功能的地址。
几个的功能被设置为用于SIP v4的特征的替换(即SIP_ANYSLOT
,SIP_QOBJECT
,SIP_RXOBJ_CON
,SIP_RXOBJ_DIS
,SIP_SIGNAL
,SIP_SLOT
,SIP_SLOT_CON
和SIP_SLOT_DIS
),其不被SIP V5支撑。
PyQt5导出的函数如下:
void pyqt_err_print
()
版本5.4中的新功能。
替代PyErr_Print()
。在PyQt v5.4中,它引发了弃用警告和调用PyErr_Print()
。在PyQt v5.5及更高版本中,它将异常和回溯的文本传递给 qFatal()
。
char ** pyqt5_from_argv_list
( PyObject * argv_list,int&argc )
将Python列表转换为命令行参数的标准C数组和参数计数。
参数: |
|
---|---|
返回: | 指向堆上参数的指针数组。 |
PyObject * pyqt5_from_qvariant_by_type
( QVariant&value,PyObject * type )
根据可选的Python类型将QVariant转换为Python对象。
参数: |
|
---|---|
返回: | 转换后的价值。如果是, |
sipErrorState pyqt5_get_connection_parts
( PyObject * slot,QObject * transmitter,const char * signal_signature,bool single_shot,QObject ** receiver,QByteArray&slot_signature )
获取接收器对象和插槽签名,以允许信号连接到可选的发送器。
参数: |
|
---|---|
返回: | 错误状态。如果是这样, |
常量 QMetaObject * pyqt5_get_qmetaobject
( PyTypeObject * 型)
获取Python类型的QMetaObject实例。Python类型必须是QObject的Python类型的子类型。
参数: | type - 是Python类型对象。 |
---|---|
返回: | 该QMetaObject。 |
sipErrorState pyqt5_get_pyqtsignal_parts
( PyObject * signal,QObject ** 发送器,QByteArray和signal_signature )
从绑定信号中获取发射器对象和信号签名。
参数: |
|
---|---|
返回: | 错误状态。如果是这样, |
sipErrorState pyqt5_get_pyqtslot_parts
( PyObject * slot,QObject ** receiver,QByteArray&slot_signature )
从可调用的装饰中获取接收器对象和插槽签名 pyqtSlot()
。
参数: |
|
---|---|
返回: | 错误状态。如果是这样, |
sipErrorState pyqt5_get_signal_signature
( PyObject * signal,const QObject * transmitter,QByteArray&signal_signature )
获取绑定或未绑定信号的签名字符串。如果信号被绑定,并且指定了给定的发送器,则它必须绑定到发送器。
参数: |
|
---|---|
返回: | 错误状态。如果是这样, |
void pyqt5_register_from_qvariant_convertor
( bool(* convertor)(const QVariant&,PyObject ** ))
注册转换器函数,将 QVariant值转换为Python对象。
参数: | convertor - 是转换器功能。这需要两个参数。第一个参数是要转换的QVariant值。第二个参数更新时会引用转换结果0 ,如果出现错误,则会引发Python异常。true 如果处理了值,转换器将返回,以便不会尝试其他转换器。 |
---|
void pyqt5_register_to_qvariant_convertor
( bool(* convertor)( PyObject *,QVariant&,bool * ))
注册一个转换器函数,将Python对象转换为 QVariant值。
参数: | convertor - 是转换器功能。这需要三个参数。第一个参数是要转换的Python对象。第二个参数是指向QVariant值的指针,该值使用转换结果进行更新。如果出现错误,第三个参数将更新为错误标志,并且会false 引发Python异常。true 如果处理了值,转换器将返回,以便不会尝试其他转换器。 |
---|
void pyqt5_register_to_qvariant_data_convertor
( bool(* convertor)( PyObject *,void *,int,bool * ))
注册转换器函数,该函数将Python对象转换为QVariant值的预分配数据。
参数: | convertor - 是转换器功能。这需要四个参数。第一个参数是要转换的Python对象。第二个参数是指向QVariant值的预分配数据的指针,该 值使用转换结果进行更新。第三个参数是值的元类型。如果出现错误,第四个参数将更新为错误标志,并且会 false 引发Python异常。true 如果处理了值,转换器将返回,以便不会尝试其他转换器。 |
---|
void pyqt5_update_argv_list
( PyObject * argv_list,int argc,char ** argv )
从命令行参数的标准C数组和参数计数更新Python列表。这与pyqt5_from_argv_list()
在调用诸如QCoreApplication之类的类的构造函数之后处理参数列表的更新 一起使用 。
参数: |
|
---|