2016-08-29 11 views
0

私はhttp://pythonqt.sourceforge.net/Examples.htmlの例に従っていますが、PythonQtはコンソールに何も印刷しません。私はちょうどhelloを印刷するスクリプトを実行しますが、何も印刷されません。一方PythonQtは何も印刷しません

PythonQt::init(); 
PythonQtObjectPtr context = PythonQt::self()->getMainModule(); 
context.evalScript("print 'hello'\n"); 

、私はそれが動作してhelloが印刷されて埋め込む無地のpythonを使用して、それを実行した場合:

Py_Initialize(); 
PyRun_SimpleString("print 'hello'\n"); 

興味深い何が私がPy_Initialize();PythonQt::init();を追加した場合、何が再び印刷されないされることをです。したがって、私はPythonQt::init();が何かをpythonのコンソール出力に行うと仮定します。何とかリダイレクトしていますか?どのように印刷するのですか?

私はQt 4.8.6、PythonQt 2.1、およびPython 2.7.6です。

答えて

1

https://sourceforge.net/p/pythonqt/discussion/631393/thread/33ad915cを読んだあと、PythonQt::init();はPythonQt :: pythonStdOutシグナルにリダイレクトするようです。

PythonQt::init()宣言は、デフォルトでRedirectStdOutを設定しますので、これは次のとおりです。

static void init(int flags = IgnoreSiteModule | RedirectStdOut, const QByteArray& pythonQtModuleName = QByteArray()); 

だから、これが機能するようになりました:

PythonQt::init(PythonQt::IgnoreSiteModule); 
PythonQtObjectPtr context = PythonQt::self()->getMainModule(); 
context.evalScript("print 'hello'\n"); 

またはその代わりに、私は信号を接続できます。

QObject::connect(PythonQt::self(), SIGNAL(pythonStdOut(const QString&)), this, SLOT(Print(const QString&))); 
関連する問題