如何更改python的qtconsole输入



我正在使用pyqt制作指南,并包含一个python 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_())

作为回复转发:

要在Qt控制台中更改提示符中的文本,请在小部件对象上设置input_buffer:

jupyter_widget.input_buffer = 'text'

最新更新