Вставить vte. Как сделать то же самое, что и это приложение PyGtk с wxPython?

Это мой первый пост. Я читаю много тем в день на Stackru, и я ценю найти там некоторую помощь. И сегодня моя очередь задавать вопрос, потому что я не нашел решения своей потребности.

Я хочу иметь терминал в приложении, которое я пишу; я (я много читал о многих (подпроцесс, поток, pty и т. д.), но я не нашел простого решения, так как это написано с помощью pygtk и vte. Вот код:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygtk
pygtk.require('2.0')
import gtk, vte

window = gtk.Window()
window.resize(600,400)
window.show()

term  = vte.Terminal()
pid   = term.fork_command('bash')
term.set_emulation('xterm')
term.show()

window.add(term)
window.show_all()
window.connect("destroy", lambda w: gtk.main_quit())
gtk.main()

Вы знаете способ сделать это с помощью wxPython?

Большое спасибо за вашу помощь, большое спасибо!:)

Edit0:

Я должен уточнить, что:

  • я говорю о оболочке bash (как в коде выше), а не оболочке python
  • я пишу это для Linux

Edit1:

Спасибо за ваши ответы!:)

Джоран, я уже прочитал этот вопрос и перепробовал весь предложенный код. Хотя это интересно, я не хочу это делать, как вы можете видеть в моем вопросе. Кажется, очень сложно написать приложение, воссоздающее эмулятор терминала.

Вот почему я ищу решение, подобное предложенному мною.

питон, я не вижу связи между твоей идеей и моим вопросом...

Спасибо за вашу помощь!

Edit2

Пожалуйста, посмотрите на этот короткий код:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import os
import pty


shell = os.environ['SHELL']
script = open('typescript', 'w')

def read(fd):
    data = os.read(fd, 1024)
    script.write(data)
    return data

pty.spawn(shell, read)

Любая идея, чтобы "положить" это в виджет с wxpython?

Edit3

Посмотри это тоже:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pexpect


c = pexpect.spawn ('bash -i')
c.interact()
c.kill(1) 

Так просто и так легко сделать...

Скажите, если это невозможно встроить в виджет wx.

1 ответ

Я видел, как этот вопрос поднимался пару раз за последний месяц или два. Ответ - нет, wxPython не имеет этой возможности. Вы должны использовать подпроцесс для запуска чего-либо и связи с ним.

Другие вопросы по тегам