我已经按照这个答案完成了 PyQt5 应用程序的嵌入式终端。
现在我想使用按钮将命令发送到类似于这里的嵌入式终端。
前任:
Button_1 send "ifconfig",
Button_2 send "ping 127.0.0.1".
我的代码:
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QPushButton
class EmbTerminal(QtWidgets.QWidget):
def __init__(self, parent=None):
super(EmbTerminal, self).__init__(parent)
self.process = QtCore.QProcess(self)
self.terminal = QtWidgets.QWidget(self)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.terminal)
# Works also with urxvt:
# self.process.start('urxvt',['-embed', str(int(self.winId()))])
self.process.start('xterm',['-into', str(int(self.winId()))])
# self.setFixedSize(640, 480)
button1 = QPushButton('ifconfig')
layout.addWidget(button1)
button1.clicked.connect(self.button_1_clicked)
button2 = QPushButton('ping 127.0.0.1')
layout.addWidget(button2)
button2.clicked.connect(self.button_2_clicked)
def button_1_clicked(self):
print('send \"ifconfig\" to embedded termial')
def button_2_clicked(self):
print('send \"ping 127.0.0.1\" to embedded termial')
class mainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(mainWindow, self).__init__(parent)
central_widget = QtWidgets.QWidget()
lay = QtWidgets.QVBoxLayout(central_widget)
self.setCentralWidget(central_widget)
tab_widget = QtWidgets.QTabWidget()
lay.addWidget(tab_widget)
tab_widget.addTab(EmbTerminal(), "EmbTerminal")
tab_widget.addTab(QtWidgets.QTextEdit(), "QTextEdit")
tab_widget.addTab(QtWidgets.QMdiArea(), "QMdiArea")
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
main = mainWindow()
main.show()
sys.exit(app.exec_())
我该怎么做?
我已经尝试过其他答案(将另一个应用程序附加到 PyQt5 窗口)并回答(将命令传递给 QProcess C++ 而不是 Python)