我最近做开源项目,给自己的软件作 Python 支持插件。我使用官方的作为支持,然后做测试的时候发现挺奇怪的一件事情:
我做的测试脚本:
import WingPlgService
def main():
if WingPlgService.requestControl() :
WingPlgService.infoPrint("Yes!")
WingPlgService.requestRelease()
else:
WingPlgService.infoPrint("No!")
WingPlgService.infoPrint("Don't Know!")
相关接口代码:
#define PyBoolRETURN(b) \
if (b) { \
Py_RETURN_TRUE; \
} else { \
Py_RETURN_FALSE; \
}
PyObject *PlgInterface::requestControl(PyObject *self, PyObject *args) {
Q_UNUSED(self);
int timeout = 1500;
if (PyArg_Parse(args, "i", &timeout)) {
PyBoolRETURN(plg->requestControl(timeout));
}
PyBoolRETURN(plg->requestControl());
}
进行测试脚本之后,函数requestControl
被调用成功,但是我的测试结果输出既没输出Yes!
,也没输出No!
,也没输出Don't Know!
(infoPrint
为我拓展函数,作用是输出字符串显示,单独测试正常通过)。
我还想让插件支持调试功能,请问有没有解决方案以供参考,我会考虑提高豆豆数量。
换了一个框架试试成功了,功能更加强大,虽然没找到调试功能,PythonQT 真香。