1

私はこの単純なコードを持っています: 基本的にいくつかのコマンドを cmd に送信し、QTextEdit で cmd からの出力を表示するツールです。基本的に、それは機能します。私が抱えている唯一の問題は、(新しいコマンドの有無にかかわらず) 送信をクリックするたびに、テキストが追加されますが、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_()
4

2 に答える 2

0

あなたが変わるなら

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

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

あなたは何が起こっているかを見ることができます、これが役立つことを願っています

于 2013-03-17T15:55:43.947 に答える