在Qt应用程序中嵌入Jupyter

时间:2016-08-09 18:54:33

标签: qt pyqt python-embedding jupyter-console

我有一个带有嵌入式Jupyter QtConsole的Qt应用程序。这是我用来创建Jupyter控制台的代码:

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

class EmbeddedJupyterConsole(RichJupyterWidget):

def __init__(self, gui):
    super(RichJupyterWidget, self).__init__(gui.ipython_container)
    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()
    gui.ipython.kernel_manager = self.kernel_manager
    gui.ipython.kernel_client  = self.kernel_client
    gui.ipython.exit_requested.connect(self.stop)

def executeCmd(self, cmd):
    self.kernel.shell.ev(cmd)

def pushVar(self, **kwarg):
    self.kernel.shell.push(kwarg)

def stop(self):
    self.kernel_client.stop_channels()
    self.kernel_manager.shutdown_kernel()
    self.app.exit()

这是我用来生成主Qt窗口的代码:

class QtMainWindow(QMainWindow):
    def __init__(self,app):
    self.console = EmbeddedJupyterConsole(self)
    # Initialize other widgets within the main window

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    window = QtMainWindow(app)
    sys.exit(app.exec_())

每当我运行此代码时,Jupyter控制台和QtApplication都能正常工作。但是,我也看到以下错误:

Traceback (most recent call last):
  File "C:\...\Miniconda2\lib\site-packages\qtconsole\console_widget.py", line 464, in sizeHint
    font_metrics = QtGui.QFontMetrics(self.font)
AttributeError: 'EmbeddedJupyterConsole' object has no attribute 'font'

如果我添加一个“假”字体属性添加到EmbeddedJupyterConsole,然后我松开了控制台的漂亮格式,错误仍然出现。有谁知道问题是什么以及如何解决?

0 个答案:

没有答案