目前正在使用 pythonQt 将 python 嵌入到我的 qt 应用程序中。我需要在我的 qt 应用程序中实现一个 python 控制台,用于处理用户 python 代码:input() 或 raw_input(),我必须在 python 中重定向标准输入,所以我在我的类中定义了一个静态方法,显示一个模式输入对话框,返回文本用户输入:
static QString myClass::myStdIn(void *callData)
{
return QFileInputDialog::getText(NULL,....);
}
//then register it to PythonQt in myclass's construct method:
PythonQt::self().setRedirectStdInCallback(myClass::myStdIn,0);
这个方法的声明是:
void PythonQt::setRedirectStdInCallback (PythonQtInputChangedCB *callback,void *callbackData = 0)
myClass::myStdIn seams 必须是静态才能注册为回调。问题是,当在 python 中调用 input() 或 raw_input() 时,应用程序冻结。我尝试使用自己的模态对话框来替换 QFileInputDialog::getText(),但只要它是模态对话框,在执行 input() 后,应用程序将冻结并出现错误。
任何人都知道如何处理这个问题?谢谢