⑴ Qt調用python子程序字元串編碼和print輸出緩存問題
在使用Qt開發主程序時,發現與Python子程序的調用存在字元串編碼和print輸出緩存問題。主程序將文件路徑作為參數傳給子程序,但子程序遇到路徑不存在的錯誤。文件確實存在,直接運行子程序讀取文件不會出現問題。懷疑是由於Qt與Python之間字元串編碼格式不同導致。
為了解決此問題,嘗試設置環境變數PYTHONIOENCODING,使用Qt創建的進程環境插入該變數,值設置為"utf-8"。代碼實現如下:QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); env.insert("PYTHONIOENCODING", "utf-8"); m_process.setProcessEnvironment(env);
在獲取子程序的控制台輸出時,發現輸出存在緩存,初始輸出後會暫停接收,一段時間後能連續獲取到之前的輸出。這可能是因為Python的stdout緩沖區存滿後才會輸出。為解決此問題,可以嘗試兩種方法:一、使用flush刷新緩沖區,修改print函數調用,添加flush參數為true,如print('xxxx', flush=True)。二、設置較小的緩存,通過在Python程序的main函數中設置sys.stdout,使用open函數並設置參數buffering為1,以最小值限制緩沖區大小。在實際開發中發現,第二種方法有效,但未深入分析是否會影響其他性能。
總結,通過設置PYTHONIOENCODING解決字元串編碼問題,使用flush或調整stdout緩沖區大小解決輸出緩存問題,可以有效解決Qt與Python子程序調用時遇到的兩個關鍵問題。推薦開發者根據實際需求選擇合適的方法。
⑵ Qt下無法調用python,打不開文件為什麼
#include<QCoreApplication>
//包含調用Python相應的頭文件
#include<Python.h>
intmain(intargc,char*argv[])
{
QCoreApplicationa(argc,argv);
//初始化Python解釋器,這是調用操作的第一步
Py_Initialize();
if(!Py_IsInitialized()){
return-1;
}
//執行單句Python語句,用於給出調用模塊的路徑,梁旅否則將無法找到相應的調用模塊
PyRun_SimpleString("importsys");
PyRun_SimpleString("sys.path.append('./'碧兄)");
//獲取qt_python_fun.py模塊的指針
PyObject*pMole=PyImport_ImportMole("qt_python_fun");
if(!pMole){
printf("Can'topenpythonfile ");
return-1;
}
//獲取hello函數的指針
PyObject*pFunhello=PyObject_GetAttrString(pMole,"hello");
if(!pFunhello){
printf("Getfunctionhellofailed ");
return-1;
}
//調用函數,傳入參數為NULL
PyObject_CallFunction(pFunhello,NULL);
//銷毀Python解釋器,這是調用的最後一步
Py_Finalize();
returna.exec();
}
作者:sleepyjoker
鏈接:http://www.jianshu.com/p/cfe44f56bb90
來源:簡書
著作悔渣襲權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
⑶ python如何做界面
PyQt,一個基於Qt的Python介麵包,可以直接使用Qt的控制項,還可以使用QSS進行界面美化,下面我簡單介紹一下這個包的安裝和使用,實驗環境Win7+Python3.6+PyCharm5.0,主要內容如下:
1.首先,安裝PyQt,這個直接在cmd窗口輸入命令「pip install pyqt5」就行,如下,由於安裝包比較大,所以需要等待一會兒:
⑷ qt process 如何運行一個python程序
這樣是不行的。
因為process.start()函數實質是採用命令行中"start XXX"的方式啟動XXX。這里的XXX僅僅適用於大部分的exe可執行文件以及一些常用文件。對於py或者pyw文件都不行。
有兩種解決方案:
另外編寫一個bat用來啟動py文件,就可以使用start啟動這個bat就可以了;
使用另一個函數「QDesktopServices::openUrl」來啟動py文件。具體使用方法請自行網路。不做過多說明。
⑸ 怎樣用QtCreator編輯運行python腳本
不知道你是在Windows還是在linux系統上
在windows上面先 Win+R 然後 進入CMD 命令行-> 輸入:cd py文件的目錄
進入你py文件所在的目錄後 輸入:python 腳本文件名.py 就可以運行了
在linux下,模擬終端輸入:python 然後把你的腳本拖進命令行就可以運行了