【发布时间】:2012-11-13 11:08:24
【问题描述】:
我知道将 vim 嵌入到 Gtk application 中,使用类似于以下 sn-p 的套接字
from gi.repository import Gtk
import subprocess
win=Gtk.Window()
win.set_default_size(600,800)
win.connect('delete-event', Gtk.main_quit)
editor = Gtk.Socket()
win.add(editor)
editor.connect("plug-removed", Gtk.main_quit)
subprocess.Popen(["/usr/bin/gvim", \
"--socketid", str(editor.get_id())])
win.show_all()
Gtk.main()
如何在PySide 中做到这一点?我在 pyside 中找不到任何对套接字的引用。
更新(使用 JimP 的想法)
以下代码在 Pyside 小部件中嵌入了一个 gvim 实例。然而,gvim 窗口似乎没有调整到父窗口的完整大小。
import sys
from PySide import QtGui
from PySide import QtCore
app = QtGui.QApplication(sys.argv)
win = QtGui.QWidget()
win.resize(600, 800)
container = QtGui.QX11EmbedContainer(win)
container.show()
QtCore.QObject.connect(container,
QtCore.SIGNAL("clientClosed()"),
QtCore.QCoreApplication.instance().quit)
winId = container.winId()
process = QtCore.QProcess(container)
options = ["--socketid", str(winId)]
process.start("gvim", options)
win.show()
sys.exit(app.exec_())
【问题讨论】:
-
有没有办法做到这一点?如果不是套接字,任何其他方式也可以。我只需要将 vim 嵌入到 pyside 应用程序中。
-
没有答案并不意味着不可能。只是看到你问题的人都不知道该怎么做。您还应该添加指向相关 PySide 的链接。 GVim 也是 GTK,我不确定它在 QT 环境中如何工作。
-
@romainl 好的....gvim 可能无法如您所说。我只是在寻找一种将 vim 嵌入到 pyside 应用程序中的方法。使用上面的代码,我可以做一个 Gtk 应用程序。但是我对如何在 pyside 应用程序中实现相同的目标一无所知。关于链接,我不知道相关代码。那么您提到的是哪个链接?
-
我不知道 PySide 是什么,所以我在 Google 上查找了它。您可能需要添加一两个链接,以帮助人们了解您的目标。你看到qtvim了吗?
-
我更新了链接。我不太了解 qtvim,但这似乎是用 C 编写的。我一直在寻找 pythonic 实现。无论如何感谢您指出这一点。
标签: python vim pyside pygobject