为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ibeautiful 2021-03-28 15:11:47
我正在制作一个程序来检查python中的adb设备我无法弹出窗口,请更正我的代码。从PyQt4导入sys导入子进程导入QtGui,QtCoread = 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()
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

多一点的环境可能会有所帮助;您在将输出输入代码中时遇到麻烦吗?如果是这样,您可以考虑改用subprocess.Popen(...)。它带有一个参数列表,并且可以轻松地从指定的源获取输出。例如,如果要运行“ ls myDir”,则可以使用:

adbCmd = subprocess.Popen(['adb', 'devices'], stdout=PIPE)

然后,您可以使用Popen对象的communication()方法来确保命令运行完成并获取stdout和stderr:

adbOut, adbErr = adbCmd.communicate()

或者,由于communication返回一个元组,因此如果您只想要stdout:

adbOut = adbCmd.communicate()[0]

然后,您可以正常解析以找到所需的数字。


查看完整回答
反对 回复 2021-04-06
  • 2 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信