我想在我正在研究的PyQt应用程序中嵌入一个IPython qt控制台小部件.下面提供的代码(并改编自/sf/answers/685754401/)适用于IPython v0.12.但是,这在IPython v0.13中崩溃self.heartbeat.start()了RuntimeError: threads can only be started once.注释掉这一行会显示小部件,但不会响应用户输入.
有谁知道如何实现IPython v0.13的等效功能?
"""
Adapted from
https://stackoverflow.com/a/9796491/1332492
"""
import os
import atexit
from IPython.zmq.ipkernel import IPKernelApp
from IPython.lib.kernel import find_connection_file
from IPython.frontend.qt.kernelmanager import QtKernelManager
from IPython.frontend.qt.console.rich_ipython_widget import RichIPythonWidget
from IPython.config.application import catch_config_error
from PyQt4 import QtCore
class IPythonLocalKernelApp(IPKernelApp):
DEFAULT_INSTANCE_ARGS = ['']
@catch_config_error
def initialize(self, argv=None):
super(IPythonLocalKernelApp, self).initialize(argv)
self.kernel.eventloop = self.loop_qt4_nonblocking
def loop_qt4_nonblocking(self, kernel):
"""Non-blocking version of the ipython qt4 kernel loop"""
kernel.timer = QtCore.QTimer()
kernel.timer.timeout.connect(kernel.do_one_iteration) …Run Code Online (Sandbox Code Playgroud)