Ant*_*ife 5 python command-line gnome-terminal gtk application-development
我正在 PyGtk 中开发一个应用程序,并想启动一个 gnome-terminal 并向它输出命令。
然后我的用户应该能够修改命令,或者使用向上箭头忽略......等。
我已经能够启动终端,但无法弄清楚如何发送命令。
这是我的应用程序的启动方式:
class App(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
process=subprocess.Popen(["gnome-terminal", "--class=App", "--name=app"], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
response,error=process.communicate()
Run Code Online (Sandbox Code Playgroud)
根据 python 文档,您想使用
Popen.communicate(input=None)
http://docs.python.org/2/library/subprocess.html#popen-objects
我建议您先从 python 编辑命令,然后再将其发送到另一个进程。例如,显示一个带有默认命令的窗口,并允许用户在执行它之前编辑(或取消)它。另外,“gnome-terminal”对此可能有点过分,“/bin/bash”应该足够了。
如果这对你不起作用,你也可以尝试这个。(取决于您实际从终端运行的内容)由于您提到用户可以编辑命令,因此最好在运行之前验证输入。
command = ['ls','-l']
output = subprocess.check_output( command )
print( output )
Run Code Online (Sandbox Code Playgroud)
小智 0
我有同样的问题。
用 tmux 解决了这个问题,感谢这个答案(复制如下)。
在应该接收带有标识符的命令启动 tmux 的终端中:
tmux new-session -s MYSES
Run Code Online (Sandbox Code Playgroud)
使用以下命令向其发送命令:
tmux send-keys -t MYSES "ls -l"$'\n'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3718 次 |
| 最近记录: |