我搜索并搜索了有关此内容的详细信息,但我一直无法找到解决方案。
我正在开发一个带有嵌入式python解释器的Qt应用程序 - 一切正常!用户可以通过嵌入式解释器处理的python代码来驱动应用程序。
我的问题是"控制台"只是一个行编辑小部件,它基本上允许用户输入文本到嵌入式解释器。
我真正需要的是python控制台小部件驱动我的嵌入式python解释器,标签已完成。 Tab完成几乎是必不可少的。文字突出显示将是一个奖励。如果我甚至可以集成一个普通的python控制台,我可以使用来自IPython import embed的"来启动ipython;嵌入()"特技。
可能有一百种方法可以做到这一点,对一些人来说可能是显而易见的,但老实说让我击败了!非常感谢任何帮助。
谢谢:)
答案 0 :(得分:1)
我遇到了同样的问题。有一个复杂性问题。 首先我下载了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)