如何从 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 并在子插入中将其用作外键?

(访问)在文本字段中搜索与另一个表字段中的字符串匹配的字符串,并在子表单中显示这些匹配记录

C#如何实现复制Txetbox中的内容到粘贴板

React/Router/MemoryRouter - 如何传递历史属性并在子组件中使用 push()?

父元素如何调用在子元素上定义的函数? [复制]