0

私はpyqtでガイドを作成しており、ipython qtconsoleウィジェットを含めています。

try:
    from qtconsole.rich_jupyter_widget import RichJupyterWidget as ipythonWidget
    from qtconsole.inprocess import QtInProcessKernelManager
except:
    from IPython.qt.console.rich_ipython_widget import RichIPythonWidget as ipythonWidget
    from IPython.qt.inprocess import QtInProcessKernelManager

コードから qtconsole の入力を変更したいのですが、うまくいきません。set_next_input 関数を試してみましたが、機能せず、必要なものを達成するために使用できる別の関数が見つかりません。私が望むものを達成することさえ可能ですか?もしそうなら、どうすればそれを行うことができますか?

これが私のコードです:

try:
    from qtconsole.rich_jupyter_widget import RichJupyterWidget as ipythonWidget
    from qtconsole.inprocess import QtInProcessKernelManager
except:
    from IPython.qt.console.rich_ipython_widget import RichIPythonWidget as ipythonWidget
    from IPython.qt.inprocess import QtInProcessKernelManager

import sys
from PyQt4 import QtGui

class sympyIpython(QtGui.QWidget):

    def __init__(self):
        super().__init__()

        self.ipython = IpythonWidget()
        v = QtGui.QVBoxLayout(self)
        button = QtGui.QPushButton('append to input')
        v.addWidget(self.ipython)
        v.addWidget(button)
        button.clicked.connect(self.symClicked)

    def symClicked(self):
        self.ipython.kernel.shell.set_next_input(' appended text')

class IpythonWidget(ipythonWidget):

    def __init__(self):
        super().__init__()
        self.kernel_manager = QtInProcessKernelManager()
        self.kernel_manager.start_kernel()
        self.kernel = self.kernel_manager.kernel
        self.kernel.gui = 'qt4'
        self.kernel_client = self.kernel_manager.client()
        self.kernel_client.start_channels()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    m = sympyIpython()
    m.show()
    sys.exit(app.exec_())
4

1 に答える 1

2

答えとして再投稿:

Qt コンソールのプロンプトでテキストを変更するにはinput_buffer、ウィジェット オブジェクトに次のように設定します。

jupyter_widget.input_buffer = 'text'
于 2016-09-04T07:01:46.853 に答える