PyQt5扩展API

     PyQt5(以及一般的SIP生成模块)的一个重要特性是能够在其上构建其他扩展模块。 QScintilla就是这样一个例子。

PyQt5提供了一个可供其他模块使用的扩展API。这具有共享代码并强制执行一致行为的优点。部分API可以从Python访问,部分可以从C ++访问。

   Python的API 

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 ++ 

C ++ API是一组函数。通过sipImportSymbol()使用所需功能的名称调用SIP的功能来获得每个功能的地址。

几个的功能被设置为用于SIP v4的特征的替换(即SIP_ANYSLOTSIP_QOBJECTSIP_RXOBJ_CONSIP_RXOBJ_DISSIP_SIGNALSIP_SLOTSIP_SLOT_CONSIP_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数组和参数计数。

参数:
  • argv_list - 是Python的参数列表。
  • argc - 使用列表中的参数数进行更新。
返回:

指向堆上参数的指针数组。

PyObject * pyqt5_from_qvariant_by_type( QVariant&value,PyObject * type 

根据可选的Python类型将QVariant转换为Python对象。

参数:
  • value - 要转换的值。
  • type - 是Python类型。
返回:

转换后的价值。如果是,0则会引发Python异常。

sipErrorState pyqt5_get_connection_parts( PyObject * slot,QObject * transmitterconst char * signal_signature,bool single_shot,QObject ** receiver,QByteArray&slot_signature 

获取接收器对象和插槽签名,以允许信号连接到可选的发送器。

参数:
  • slot - 是插槽,应该是可调用或绑定信号。
  • 发射器 - 是可选的QObject发射器。
  • signal_signature - 是要连接的信号的签名。
  • single_shot - true如果信号只发射一次。
  • 接收器 - 使用QObject接收器更新。如果插槽需要它,这可能是代理。
  • slot_signature - 使用插槽的签名进行更新。
返回:

错误状态。如果是这样,sipErrorFail那么就会引发Python异常。

常量 QMetaObject * pyqt5_get_qmetaobject( PyTypeObject * 

获取Python类型的QMetaObject实例。Python类型必须是QObject的Python类型的子类型。

参数: type - 是Python类型对象。
返回: 该QMetaObject。

sipErrorState pyqt5_get_pyqtsignal_parts( PyObject * signal,QObject ** 发送器,QByteArray和signal_signature 

从绑定信号中获取发射器对象和信号签名。

参数:
  • 信号 - 是绑定信号。
  • 发射器 - 使用QObject发射器进行更新。
  • signal_signature - 用信号的签名更新。
返回:

错误状态。如果是这样,sipErrorFail那么就会引发Python异常。

sipErrorState pyqt5_get_pyqtslot_parts( PyObject * slot,QObject ** receiver,QByteArray&slot_signature 

从可调用的装饰中获取接收器对象和插槽签名 pyqtSlot()

参数:
  • slot - 是可调用的插槽。
  • 接收器 - 使用QObject接收器更新。
  • slot_signature - 使用插槽的签名进行更新。
返回:

错误状态。如果是这样,sipErrorFail那么就会引发Python异常。

sipErrorState pyqt5_get_signal_signature( PyObject * signalconst QObject * transmitter,QByteArray&signal_signature 

获取绑定或未绑定信号的签名字符串。如果信号被绑定,并且指定了给定的发送器,则它必须绑定到发送器。

参数:
  • 信号 - 是信号。
  • 发射器 - 是可选的QObject发射器。
  • signal_signature - 用信号的签名更新。
返回:

错误状态。如果是这样,sipErrorFail那么就会引发Python异常。

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之类的类的构造函数之后处理参数列表的更新 一起使用 。

参数:
  • argv_list - 是要更新的参数的Python列表。
  • argc - 是命令行参数的数量。
  • argv - 指向堆上参数的指针数组。

你可能感兴趣的:(PyQt5)