Не удается правильно вставить окно в PyGTK с сокетом - PullRequest
1 голос
/ 21 мая 2010

Я следую учебному пособию по сокету 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, но ничего не происходит и, конечно, его нельзя использовать.

Я изменил скрипт так, чтобы он выглядел так:

#!/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.Итак, кто-нибудь знает, можно ли это исправить или это ошибка?

1 Ответ

1 голос
/ 28 мая 2010

На первый взгляд это похоже на ошибку в xterm plug / socketing. Я могу воспроизвести на Lucid. Если у вас установлен vim-gtk, замените ваш cmd на:

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

И ваш скрипт отлично работает для встраивания vim.

...