使用Socket无法在PyGTK中正确嵌入Window

时间:2010-05-21 14:18:52

标签: sockets pygtk

我正在关注PyGTK套件上的教程,你将xterm窗口嵌入另一个应用程序。

我从这里下载了文件:http://www.pygtk.org/pygtk2tutorial/examples/socket.py

当我按照以下方式运行时:http://faq.pygtk.org/index.py?req=show&file=faq19.015.htp我得到两个不同的结果:

  1. 在Ubuntu Karmic Koala(GTK 2.16)上,xterm似乎与套接字窗口分离,无法使用。
  2. 在Lucid Lynx(GTK 2.17)上,xterm窗口消失,套接字窗口似乎从xterm获得背景,但没有任何反应,当然,它不可用。
  3. 我已将脚本修改为如下所示:

    #!/usr/bin/python
    import pygtk
    pygtk.require('2.0')
    import gtk
    from subprocess import Popen
    
    def plugged_event(widget):
        print "Inserted a widget"
    
    window = gtk.Window()
    window.connect("destroy", gtk.main_quit)
    window.show()
    
    socket = gtk.Socket()
    window.add(socket)
    socket.connect("plug-added", plugged_event)
    sock_id = str(socket.get_id())
    cmd = ["xterm", "-into", sock_id]
    Popen(cmd)
    socket.show()
    
    gtk.main()
    

    一切似乎都运行良好,xterm嵌入到套接字窗口,但是我无法在其上使用键盘并且光标显示为空。这两个版本的GTK都是一样的。那么,有没有人知道这是否可以修复或者这是一个Bug吗?

1 个答案:

答案 0 :(得分:1)

乍一看,这似乎是xterm插件/ socketing中的一个错误。我可以在Lucid上重现。如果您安装了vim-gtk,请将cmd替换为:

cmd = ["gvim", "--socketid", sock_id]

你的脚本可以很好地嵌入vim。