python – 如何使用PyQt GUI中嵌入的终端
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 如何使用PyQt GUI中嵌入的终端,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2375字,纯文字阅读大概需要4分钟。
内容图文
![python – 如何使用PyQt GUI中嵌入的终端](/upload/InfoBanner/zyjiaocheng/725/5a1d781c797b4d1db24c44fe0cfbea7d.jpg)
现有的环境和框架可以通过Bash终端使用,我想在其中创建一个GUI.我想到的是以下流程:
>在Bash会话中,设置框架环境.这会导致在会话中设置从环境变量到身份验证的所有内容.
>运行Python GUI脚本以包围现有会话并使后续步骤更容易运行.
> GUI出现,一方面显示嵌入式终端中的Bash会话,另一方面显示一组按钮,这些按钮对应于可在现有框架环境中运行的各种命令.
>可以在GUI中按下按钮,从而导致运行某些Bash命令.运行结果显示在嵌入式终端中.
有什么方法可以创建这样的GUI?我意识到与现有环境交互的想法可能很棘手.如果它特别棘手,我愿意在GUI的一个会话中重新创建环境.在任何情况下,GUI如何与嵌入式终端交互.当按下GUI按钮时,如何在嵌入式终端中运行和显示命令?
GUI的基本启动(具有嵌入式终端)如下:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class embeddedTerminal(QWidget):
def __init__(self):
QWidget.__init__(self)
self.resize(800, 600)
self.process = QProcess(self)
self.terminal = QWidget(self)
layout = QVBoxLayout(self)
layout.addWidget(self.terminal)
self.process.start(
'xterm',
['-into', str(self.terminal.winId())]
)
if __name__ == "__main__":
app = QApplication(sys.argv)
main = embeddedTerminal()
main.show()
sys.exit(app.exec_())
如果按下GUI中的按钮,我怎么能在这个嵌入式终端上运行?
解决方法:
如果它必须是一个真正的终端和一个真正的shell(而不只是接受一行输入,运行一些命令,然后显示输出) – tmux怎么样?
您可以使用tee之类的东西将输出返回到您的程序中.
请注意,tmux会话可能会在您的程序运行中持续存在,因此您需要了解其工作原理以及如何控制它.
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class embeddedTerminal(QWidget):
def __init__(self):
QWidget.__init__(self)
self._processes = []
self.resize(800, 600)
self.terminal = QWidget(self)
layout = QVBoxLayout(self)
layout.addWidget(self.terminal)
self._start_process(
'xterm',
['-into', str(self.terminal.winId()),
'-e', 'tmux', 'new', '-s', 'my_session']
)
button = QPushButton('List files')
layout.addWidget(button)
button.clicked.connect(self._list_files)
def _start_process(self, prog, args):
child = QProcess()
self._processes.append(child)
child.start(prog, args)
def _list_files(self):
self._start_process(
'tmux', ['send-keys', '-t', 'my_session:0', 'ls', 'Enter'])
if __name__ == "__main__":
app = QApplication(sys.argv)
main = embeddedTerminal()
main.show()
sys.exit(app.exec_())
内容总结
以上是互联网集市为您收集整理的python – 如何使用PyQt GUI中嵌入的终端全部内容,希望文章能够帮你解决python – 如何使用PyQt GUI中嵌入的终端所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。