linux pyqt 怎么用终端打开,在PyQt中,如何将终端嵌入窗口中?

我有一个小脚本,用于在PyQt GUI中嵌入xterm。在Linux上,可以创建这样的GUI:

3LOMx.png

但是,在OS X上运行相同的脚本会产生两个类似的窗口:

YdjgD.jpg

有人知道如何解决这个问题并防止OSX把GUI搞砸吗?在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_())

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在PyQt的UI上显示Linux终端输出的结果,可以使用QTextEdit控件。以下是实现的基本步骤: 1. 在UI设计添加一个QTextEdit控件,作为显示终端输出的区域。 2. 在代码创建一个QProcess对象,用于启动终端进程。 3. 将QProcess对象的标准输出和标准错误重定向到QTextEdit控件,以便终端输出可以显示在UI上。 下面是一个简单的例子: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit from PyQt5.QtCore import QProcess class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建一个QTextEdit控件 self.text_edit = QTextEdit(self) self.setCentralWidget(self.text_edit) # 创建一个QProcess对象 self.process = QProcess(self) self.process.readyReadStandardOutput.connect(self.handle_stdout) self.process.readyReadStandardError.connect(self.handle_stderr) # 启动终端进程 self.process.start('bash') def handle_stdout(self): # 将标准输出重定向到QTextEdit控件 data = self.process.readAllStandardOutput() output = str(data, 'utf-8') self.text_edit.insertPlainText(output) def handle_stderr(self): # 将标准错误重定向到QTextEdit控件 data = self.process.readAllStandardError() output = str(data, 'utf-8') self.text_edit.insertPlainText(output) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 在这个例子,我们创建了一个MainWindow类,该类继承自QMainWindow,其包含一个QTextEdit控件。我们还创建了一个QProcess对象,并将其标准输出和标准错误连接到handle_stdout和handle_stderr函数,这两个函数将终端输出重定向到QTextEdit控件。最后,我们启动了一个bash进程,该进程将在QProcess对象运行。 当我们运行这个程序时,会显示一个带有QTextEdit控件的窗口。在这个窗口,我们可以输入Linux命令,并查看命令的输出。输出将显示在QTextEdit控件,以便我们可以在UI上查看终端输出的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值