2016-10-13 8 views
0

私はこれに関する良い情報を検索して検索しましたが、解決策を見つけることができませんでした。QtアプリケーションにPython/IPythonコンソールウィジェットを追加する

私は、Pythonインタプリタが組み込まれたQtアプリケーションで作業しています。すべてうまく動作しています!ユーザは、埋め込みインタプリタによって処理されるPythonコードを介してアプリケーションを駆動することができる。

私の問題は、「コンソール」は基本的に埋め込みインタープリタへのユーザ入力テキストを許可する行編集ウィジェットではないということです。

本当に必要なのは、Pythonのコンソールウィジェットです。私の組み込みのPythonインタプリタは、タブが完成しています。タブの完成は事実上不可欠です。テキスト強調表示はボーナスになります。通常のPythonコンソールを統合することができれば、ipythonのimport embed;埋め込み()トリックを使ってipythonを起動することができます。

これを行うには100の方法があるかもしれませんが、それは明らかかもしれませんが、それは正直に私を打つ!どんな支援も大歓迎です。

ありがとう:)

+1

これはJupyter(以前のIPythonの)qtconsoleウィジェットで行うことができます。それを行うアプリケーションの例についてSpyderを見てください。 –

+0

こんにちはトーマス。提案していただきありがとうございます。私はこれを見つけて、例を通して部分的に働いた。しかし、私はこれがPySide/PyQtを必要とすると信じています。 PyQtは私たちのための選択肢ではありません(絶対に必要な場合を除きます)。PySideの状態がこの日になっているかどうかはわかりません。 – dmon

+0

qtconsoleをC++で再実装することができないのは、これが私が知る唯一の方法です。それを試してみたいのであれば、PySideで動作するはずです。 –

答えて

0

私は同じ問題がありました。互換性の問題がありました。 まずPycharm(エディタ)をダウンロードしました。私はこのコードをウィジェットのように使いました。できます。

import sip 

sip.setapi(u'QDate', 2) 
sip.setapi(u'QDateTime', 2) 
sip.setapi(u'QString', 2) 
sip.setapi(u'QTextStream', 2) 
sip.setapi(u'QTime', 2) 
sip.setapi(u'QUrl', 2) 
sip.setapi(u'QVariant', 2) 


from IPython.lib import guisupport 

from qtconsole.rich_jupyter_widget import RichJupyterWidget 
from qtconsole.inprocess import QtInProcessKernelManager 

class IPythonWidget(RichJupyterWidget): 
    def __init__(self,customBanner=None,*args,**kwargs): 
     if not customBanner is None: self.banner=customBanner 
     super(IPythonWidget, self).__init__(*args,**kwargs) 
     self.kernel_manager = kernel_manager = QtInProcessKernelManager() 
     kernel_manager.start_kernel() 
     kernel_manager.kernel.gui = 'qt4' 
     self.kernel_client = kernel_client = self._kernel_manager.client() 
     kernel_client.start_channels() 

     def stop(): 
      kernel_client.stop_channels() 
      kernel_manager.shutdown_kernel() 
      guisupport.get_app_qt4().exit() 
     self.exit_requested.connect(stop) 

    def pushVariables(self,variableDict): 
     """ Given a dictionary containing name/value pairs, push those variables to the IPython console widget """ 
     self.kernel_manager.kernel.shell.push(variableDict) 
    def clearTerminal(self): 
     """ Clears the terminal """ 
     self._control.clear() 

    def printText(self,text): 
     """ Prints some plain text to the console """ 
     #self._append_plain_text(text) 
     self.append_stream(text) 
    def executeCommand(self,command): 
     """ Execute a command in the frame of the console widget """ 
     # self._execute(command,False) 
     self.execute(command,False) 
+0

こんにちはAlvaro、すみません、私はしばらくここでチェックしていません。申し訳ありませんが、私はあなたがこれをどのように使用したか分かりません。 pyQtアプリを実行して起動し、このウィジェットを起動しますか?私は本当に助けに感謝しますが、もう少し情報が素晴らしいでしょう。 – dmon

関連する問題