在PyQt中集成C++的程序一般思路都是调用编译后生成的dll文件,其实有很多的坑。包括生成的dll文件不适配python,找不到函数等等问题。但是在C++环境里确实能正常使用。于是就有了一个想法,为什么不直接使用C++做一个测试环境,用来使用程序的demo。可以在C++程序里做一个很多input的输入,输入了参数之后在进行下一步。
假设下面是C++生成的exe,作为一个黑乎乎的窗口:
首先定义一个处理exe文件以及输入参数的函数,例如我定义一个run_dc_exe
:
然后在PyQt界面得到输入的值,例如:
xingbie = self.ui.xingbieLineEdit.text() # 通过界面得到性别的值
xingming = self.ui.xingmingLineEdit.text() # 通过界面得到姓名的值
shoujihao = self.ui.shoujihaoLineEdit.text() # 通过界面得到手机号的值
完整的调用就是:
def ZhongxianTiquOKClicked(self):
xingbie = self.ui.xingbieLineEdit.text() # 通过界面得到性别的值
xingming = self.ui.xingmingLineEdit.text() # 通过界面得到姓名的值
shoujihao = self.ui.shoujihaoLineEdit.text() # 通过界面得到手机号的值
# 检查文件后缀
try:
print("尝试运行")
self.run_dc_exe(xingbie, xingming, shoujihao)
except:
msg_box = QMessageBox()
msg_box.setText("失败,请检查输入参数!")
msg_box.setWindowTitle("提示")
msg_box.exec_()
这样就避免了刻意去使用dll文件带来的各种问题。主要c++生成的exe能正常在电脑上打开运行,那么这么做就相当于用脚本模拟了以下手动输入,还是很nice的!
在我的集成他人算法的软件项目中,以及成功实践了这个方法!