Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 PySide,QTextEdit追加添加空行_Python 2.7_Append_Pyside_Qtextedit_Qprocess - Fatal编程技术网

Python 2.7 PySide,QTextEdit追加添加空行

Python 2.7 PySide,QTextEdit追加添加空行,python-2.7,append,pyside,qtextedit,qprocess,Python 2.7,Append,Pyside,Qtextedit,Qprocess,我有一个简单的代码:基本上是一个工具,用于向cmd发送一些命令,并在QTextEdit中显示cmd的输出。 基本上,它是有效的。 我唯一的问题是,每次单击带有或不带新命令的send时,文本都会被追加,但奇怪的空行会出现在QTextEdit的末尾。即使我清除控制台,仍然有这些线路。 也许这与我称之为过程的方式有关,我不知道因此需要帮助 from PySide.QtCore import * from PySide.QtGui import * import sys class MyWindow

我有一个简单的代码:基本上是一个工具,用于向cmd发送一些命令,并在QTextEdit中显示cmd的输出。 基本上,它是有效的。 我唯一的问题是,每次单击带有或不带新命令的send时,文本都会被追加,但奇怪的空行会出现在QTextEdit的末尾。即使我清除控制台,仍然有这些线路。 也许这与我称之为过程的方式有关,我不知道因此需要帮助

from PySide.QtCore import *
from PySide.QtGui import *
import sys


class MyWindow(QDialog):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.setWindowTitle("Send to CMD")

        self.check1 = QCheckBox("Activate Variable")
        self.variable = QLineEdit()
        self.finalcommand = QLineEdit()
        self.clearCommand = QPushButton("Clear")
        self.sendCommand = QPushButton("Send")
        self.clearOnSend = QCheckBox("Clear on Send")

        self.process = QProcess()
        self.console = QTextEdit(self)

        layout = QVBoxLayout()
        layout.addWidget(self.check1)
        layout.addWidget(self.variable)
        layout.addWidget(self.finalcommand)
        layout.addWidget(self.clearOnSend)
        layout.addWidget(self.clearCommand)
        layout.addWidget(self.sendCommand)
        layout.addWidget(self.console)
        self.setLayout(layout)

        self.connect(self.check1, SIGNAL("clicked()"), self.appendText)
        self.variable.textChanged.connect(self.appendText)

        self.clearCommand.clicked.connect(self.Clear)
        self.sendCommand.clicked.connect(self.Send)

    def appendText(self):
        if self.check1.isChecked():
            TEXT1 = "Dir" + ' ' + str(self.variable.text())
        else:
            TEXT1 = ""
        self.finalcommand.setText(str(TEXT1))

    def Clear(self):
        if self.clearCommand.isEnabled():
            self.console.clear()

    def Send(self):
        if self.clearOnSend.isChecked():
            self.console.clear()
        FCTS = "cmd.exe /c" + " " + str(self.finalcommand.text())
        self.process.readyReadStandardOutput.connect(self.readConsole)
        self.process.start(FCTS)
        if not self.process.waitForStarted(0):
            return False
        if not self.process.waitForFinished(0):
            return False

    def readConsole(self):
        #self.console.setText(str(self.process.readAllStandardOutput()))
        self.console.append(str(self.process.readAllStandardOutput()))



app = QApplication(sys.argv)
form = MyWindow()
form.show()
app.exec_()

如果更改,您可能希望使用string.rstrip函数而不是string.strip

self.console.append(str(self.process.readAllStandardOutput()))


您可以看到发生了什么,希望这有帮助

也许可以尝试def readConsoleself:Ba=self.process.readAllStandardOutput QString s=Ba self.console.appends感谢提供帮助,但是您的解决方案确实返回了相同的问题可能字符串中有垃圾值,尝试使用内置的string.strip功能我遇到了相同的问题。。。。有什么解决办法吗?也不行。我认为问题不在于剥离字符,而在于读取和写入过程的方式。不管怎样,每当我发送命令时,[PySt.qtCys.qBytEray]都被添加到TeTeTeDT的末尾,因此出现空行。我会深入研究的。谢谢你的提示;事实上,我找到了解决办法。我花了这么多时间,但它是如此明显!我真丢脸。该进程是在def__init上创建的。我从那里删除了它,并在def Sendself中创建了它:现在,至少一切似乎都按照它应该的方式工作。
self.console.append(str([self.process.readAllStandardOutput()]))