猿问

python子进程读取终端输出并使用PyQt4消息回复

我正在制作一个程序来检查python中的adb设备


我无法弹出窗口,请更正我的代码。


从PyQt4导入sys导入子进程导入QtGui,QtCore


ad = subprocess.check_output([“ adb”,“ devices”])


class Example(QtGui.QWidget):

    def __init__(self):

        super(Example, self).__init__()


        self.initUI()


    def initUI(self):


        QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10))



        btn = QtGui.QPushButton('Check Device', checkadb(ad))

        btn.resize(135, 30)

        btn.move(50, 10)


        self.setGeometry(250, 250, 400, 400)

        self.setWindowTitle('Tooltips')

        self.show()


def clicked(*args):

    QtGui.QMessageBox.about(QtGui, "No Device Found")


def clicked2(*args):

    QtGui.QMessageBox.about(QtGui, "Device Found")


def checkadb(ad):

    if len(ad) <= 27:

        clicked()


elif len(ad) > 27:

    clicked2()


def main():


app = QtGui.QApplication(sys.argv)

ex = Example()

sys.exit(app.exec_())


if __name__ == '__main__':

    main()


ibeautiful
浏览 193回答 2
2回答

婷婷同学_

多一点的环境可能会有所帮助;您在将输出输入代码中时遇到麻烦吗?如果是这样,您可以考虑改用subprocess.Popen(...)。它带有一个参数列表,并且可以轻松地从指定的源获取输出。例如,如果要运行“ ls myDir”,则可以使用:adbCmd&nbsp;=&nbsp;subprocess.Popen(['adb',&nbsp;'devices'],&nbsp;stdout=PIPE)然后,您可以使用Popen对象的communication()方法来确保命令运行完成并获取stdout和stderr:adbOut,&nbsp;adbErr&nbsp;=&nbsp;adbCmd.communicate()或者,由于communication返回一个元组,因此如果您只想要stdout:adbOut&nbsp;=&nbsp;adbCmd.communicate()[0]然后,您可以正常解析以找到所需的数字。
随时随地看视频慕课网APP

相关分类

Python
我要回答