gpt4 book ai didi

python - 向 Python QProcess 示例添加按钮和单独的窗口

转载 作者:行者123 更新时间:2023-11-28 16:41:56 29 4
gpt4 key购买 nike

我正在尝试使用 QProcess 并将标准输出读取到由按钮启动的 QTextEdit。我该如何适应 this example这样做?我是否必须为 QProcess 调用一个单独的类?

from PyQt4.QtGui import * 
from PyQt4.QtCore import *
import sys


class MyQProcess(QProcess):
def __init__(self):
#Call base class method
QProcess.__init__(self)
#Create an instance variable here (of type QTextEdit)
self.edit = QTextEdit()
self.edit.setWindowTitle("QTextEdit Standard Output Redirection")
self.edit.show()

#Define Slot Here
@pyqtSlot()
def readStdOutput(self):
self.edit.append(QString(self.readAllStandardOutput()))


def main():
app = QApplication(sys.argv)
qProcess = MyQProcess()

qProcess.setProcessChannelMode(QProcess.MergedChannels);
qProcess.start("ldconfig -v")
QObject.connect(qProcess,SIGNAL("readyReadStandardOutput()"),qProcess,SLOT("readStdOutput()"));

return app.exec_()

if __name__ == '__main__':
main()

最佳答案

使用QPushButton制作一个按钮。

使用QPushButton.clicked.connect绑定(bind)事件。

例如:

import sys

from PyQt4.QtGui import *
from PyQt4.QtCore import *


class MyWindow(QWidget):
def __init__(self):
QWidget.__init__(self)
self.edit = QTextEdit()
self.edit.setWindowTitle("QTextEdit Standard Output Redirection")
self.button = QPushButton('Run ldconfig')
self.button.clicked.connect(self.onClick)
layout = QVBoxLayout(self)
layout.addWidget(self.edit)
layout.addWidget(self.button)

@pyqtSlot()
def readStdOutput(self):
self.edit.append(QString(self.proc.readAllStandardOutput()))

def onClick(self):
self.proc = QProcess()
self.proc.start("echo hello")
self.proc.setProcessChannelMode(QProcess.MergedChannels);
QObject.connect(self.proc, SIGNAL("readyReadStandardOutput()"), self, SLOT("readStdOutput()"));

def main():
app = QApplication(sys.argv)
win = MyWindow()
win.show()
return app.exec_()

if __name__ == '__main__':
main()

关于python - 向 Python QProcess 示例添加按钮和单独的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18459770/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com