3

初めての投稿です。私は、Stackoverflow で 1 日に多くのトピックを読んでいます。そして、今日は私のニーズに対する解決策が見つからなかったので、私が質問する番です。

私が書いているアプリに端末が必要です。私は(サブプロセス、スレッド、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 でそれを行う方法を知っていますか?

お世話になりました、どうもありがとうございました!! :)

編集0:

私はそれを正確にする必要があります:

  • 私はbashシェル(上記のコードのように)について話しているのであって、Pythonシェルではありません
  • Linux用に書いています

編集1:

回答ありがとうございます。:)

Joran、私はすでにこの質問を読んでおり、提案されたすべてのコードを試しました。興味深いですが、私の質問でわかるように、それは私がやりたい方法ではありません。端末エミュレーターを再現するアプリを書くのはとても難しそうです。

そのため、私が提案したコードのような解決策を探しています。

pythonm、あなたのアイデアと私の質問との関係がわかりません...

ご協力いただきありがとうございます!

編集2

この短いコードを見てください:

#!/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 を使用してウィジェットに「配置」するアイデアはありますか?

編集3

それも見てください:

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

import pexpect


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

シンプルでとてもやりやすい...

それを wx ウィジェットに埋め込むことが不可能かどうか教えてください。

4

1 に答える 1

1

この 1、2 か月の間に、この質問が数回出てくるのを見てきました。答えはノーです。wxPython にはこの機能がありません。サブプロセスを使用して何かを起動し、それと通信する必要があります。

于 2012-09-26T14:30:43.143 に答える