在静态pythonQt callb上无法运行

2024-03-29 14:48:55 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我正在使用pythonQt将python嵌入到我的qt应用程序中。我需要在我的qt应用程序中实现一个python控制台,为了处理用户python代码:input()或raw\u input(),我必须在python中重定向stdin,所以我在类中定义了一个静态方法,显示一个模态inputdialog,返回文本用户输入:

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\u input()时,应用程序会冻结。我试图用我自己的模式对话框来替换QFileInputDialog::getText(),但只要它是一个模式对话框,在执行input()之后,应用程序就会冻结并退出。你知道吗

有人知道如何处理这个问题吗? 谢谢


Tags: 用户应用程序inputraw模式myclassqt对话框
1条回答
网友
1楼 · 发布于 2024-03-29 14:48:55

你试过看PythonQtScriptingConsole吗?你知道吗

  connect(PythonQt::self(), SIGNAL(pythonStdOut(const QString&)), this, SLOT(stdOut(const QString&)));
  connect(PythonQt::self(), SIGNAL(pythonStdErr(const QString&)), this, SLOT(stdErr(const QString&)));

相关问题 更多 >