我最近做开源项目,给自己的软件作 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 真香。