- UID
- 3808
- 精华
- 积分
- 1480
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
楼主 |
发表于 2018-10-30 11:58:26
|
显示全部楼层
还是发一下调用python脚本的那段函数,真的和从dll中调用导出函数有相似的行为:
首先要#include <Python.h>
代码如下:
- //借助python脚本fanyi.py来进行翻译
- void MainWindow::use_youdao_translate()
- {
- //初始化python模块
- Py_Initialize();
- if(!Py_IsInitialized())
- {
- QMessageBox::critical(NULL, "Error1", "Please get in touch with the Watermelon,sorry.",
- QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
- return;
- }
- //导入fanyi.py文件
- PyObject *pModule = PyImport_ImportModule("fanyi");
- if(!pModule)
- {
- QMessageBox::critical(NULL, "Error2", "Please get in touch with the Watermelon,sorry.",
- QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
- }
- //获取fanyi模块中的get_translation_result函数
- PyObject *pGTResult = PyObject_GetAttrString(pModule,"get_translation_result");
- if(!pGTResult)
- {
- QMessageBox::critical(NULL, "Error3", "Please get in touch with the Watermelon,sorry.",
- QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
- }
- //开始调用get_translation_result函数
- QString origin = ui->origin_textEdit->toPlainText(); //获取原文中的内容
- //将换行符替换成*字符,因为原脚本只能爬取没有换行符的字符串
- origin.replace('\n','*');
- char *str = NULL;
- QByteArray ba = origin.toLatin1();
- str = ba.data(); //将QString转化为char *
- PyObject *pRet = PyObject_CallFunction(pGTResult,"s",str);
- //获取python的返回值
- char *res = NULL;
- PyArg_Parse(pRet,"s",&res);
- //将返回的结果转化成QString类型
- QString result = res;
- result.replace('*','\n'); //将输出格式换回来,我真聪明
- ui->translate_textEdit->setPlainText(result);
- //结束,释放python
- Py_Finalize();
- }
复制代码
|
|