如何从 textbox1 复制字符串,并在子进程命令中使用,并在 textbox2 中输出
Posted
技术标签:
【中文标题】如何从 textbox1 复制字符串,并在子进程命令中使用,并在 textbox2 中输出【英文标题】:Howto Copy string from textbox1, and use in subproccess command, and output in textbox2 【发布时间】:2015-06-28 12:25:19 【问题描述】:您好,我想知道如何在 textbox_1(顶部一个框)中键入字符串“word” 然后复制该字符串并在子进程命令中使用并将其输出到 textbox_2(按钮框)而不使用信号
我尝试复制 textbox_1,但那个剂量似乎有效。
我的代码如下所示。
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import *
import subprocess
from subprocess import Popen, PIPE
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(840, 460)
self.textEdit_1 = QtGui.QTextEdit(Form)
self.textEdit_1.setGeometry(QtCore.QRect(0, 0, 291, 141))
self.textEdit_1.setObjectName(_fromUtf8("textEdit_1"))
self.textEdit_2 = QtGui.QTextEdit(Form)
self.textEdit_2.setGeometry(QtCore.QRect(0, 200, 301, 101))
self.textEdit_2.setObjectName(_fromUtf8("textEdit_2"))
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(370, 40, 381, 241))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Form", None))
self.pushButton.setText(_translate("Form", "go", None))
self.pushButton.clicked.connect(self.run)
def run(self):
ff = self.textEdit_1.copy()
dog1 = subprocess.Popen('help ' + ff, stdout=subprocess.PIPE, shell=True)
self.textEdit_2.setText(dog1.stdout.read())
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
```
只使用一个子进程命令而不从 text_box1 复制会导致输出正确的文本。
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import *
import subprocess
from subprocess import Popen, PIPE
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(840, 460)
self.textEdit_1 = QtGui.QTextEdit(Form)
self.textEdit_1.setGeometry(QtCore.QRect(0, 0, 291, 141))
self.textEdit_1.setObjectName(_fromUtf8("textEdit_1"))
self.textEdit_2 = QtGui.QTextEdit(Form)
self.textEdit_2.setGeometry(QtCore.QRect(0, 200, 301, 101))
self.textEdit_2.setObjectName(_fromUtf8("textEdit_2"))
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(370, 40, 381, 241))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Form", None))
self.pushButton.setText(_translate("Form", "go", None))
self.pushButton.clicked.connect(self.run)
def run(self):
#ff = self.textEdit_1.copy()
dog1 = subprocess.Popen('help start', stdout=subprocess.PIPE, shell=True)
self.textEdit_2.setText(dog1.stdout.read())
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
```
【问题讨论】:
【参考方案1】:什么意思? “复制”将任何选定的文本复制到剪贴板。您只需在框中输入一些内容,然后突出显示某些字符或整个内容并点击“运行”。现在您可以将其从剪贴板粘贴到任何地方。 http://pyqt.sourceforge.net/Docs/PyQt4/qtextedit.html#copy
【讨论】:
不,我不是这个意思。如果您查看代码,您会看到我正在尝试使用 textbox_1 中的文本,并将其添加到我的子进程命令“HELP”中。因此,如果我在 textbox_1 中键入“START”,则 textbox_2 中的输出将是“help START” 我不明白你的意思,但你的代码将这些东西复制到剪贴板就好了。您可能的意思是 ff = self.textEdit_1.toPlainText() 也许我们在这里谈论不同的事情。我想从 textbox_1 复制到剪贴板。然后在我的子进程命令中,我已经有一半的命令“帮助”dog1 = subprocess.Popen('HELP'+ ff,stdout = subprocess.PIPE,shell = True)。我想将剪贴板粘贴到 ff 的其余命令。 编辑!!我犯了一个代码错误 ff = self.textEdit_1.toPlainText() works thx mate 好的。你把东西从表单复制到剪贴板,现在你必须把它从剪贴板粘贴到子进程,我猜。我会在下面放一些代码。以上是关于如何从 textbox1 复制字符串,并在子进程命令中使用,并在 textbox2 中输出的主要内容,如果未能解决你的问题,请参考以下文章
Vue.js - 如何将 prop 作为 json 数组传递并在子组件中正确使用?
在 Hibernate 中,如何自动检索父 id 并在子插入中将其用作外键?
(访问)在文本字段中搜索与另一个表字段中的字符串匹配的字符串,并在子表单中显示这些匹配记录