Skip to main content
 首页 » 编程设计

python之嵌入 vte。如何使用 wxPython 执行与此 PyGtk 应用程序相同的操作

2025年05月04日12EasonJim

这是我的第一篇文章。我每天在 Stackoverflow 上阅读很多主题,我很高兴能在那里找到一些帮助。 今天轮到我提问了,因为我没有找到满足我需求的解决方案。

我想在我正在编写的应用程序中有一个终端;我(已经阅读了很多关于很多(子进程、线程、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 shell(如上面的代码),而不是 python shell
  • 我为 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 小部件中,请告诉我。

请您参考如下方法:

在过去一两个月里,我看到这个问题出现过几次。答案是否定的,wxPython 没有这个能力。您将不得不使用子流程来启动某些东西并与之通信。