700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 如何通过Pyqt 或者PySide 在电脑上直接显示手机屏幕。

如何通过Pyqt 或者PySide 在电脑上直接显示手机屏幕。

时间:2020-05-21 17:13:34

相关推荐

如何通过Pyqt 或者PySide 在电脑上直接显示手机屏幕。

1:首先,怎样获得手机屏幕,有2种方式,一种是直接使用adb shell screencap -p获取,这个优点是简单,方便,但速度不够快,另外一个方式,通过Android 隐藏的API surface来实现,优点是:截图只需要十几ms,但需要在手机上写apk。

抓图实现如下:(以window 系统为例)

def updatePic(mainWindow):

while True:

os.system('adb wait-for-device')

#截图保存到手机sdcard 的pic 目录下。

cmd='adb shell screencap -p /sdcard/pic/temp_a.png '

subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True).wait()

cmdpic="adb pull /sdcard/pic/temp_a.png F:\\android\\new_test "

#把截图拖到PC上。

subprocess.Popen(cmdpic,stdout=subprocess.PIPE,shell=True).wait()

#截图完成后,让窗口刷新截图。

mainWindow.mySignal.emit('temp_a.png')

完整的其他部分如下:

from PySide.QtGui import *

import sys,os

from PySide.QtCore import *

#定义:class MyView

class MyView(QGraphicsView):

mySignal = Signal(str)

def __init__(self):

QGraphicsView.__init__(self)

self.myScene = QGraphicsScene(self)

self.setScene(self.myScene)

self.pixmap=QPixmap()

self.pixmap.load("temp_a.png")

self.pixmap=self.pixmap.scaled(400, 500, Qt.KeepAspectRatio)

self.myScene.addPixmap(self.pixmap)

# 通过mySignal把addpixmap 与UpdatePic1 链接起来。实现自动刷新图片

self.mySignal.connect(self.UpdatePic1)

def UpdatePic1(self, text):

self.pixmap.load(text)

self.pixmap=self.pixmap.scaled(400, 500, Qt.KeepAspectRatio)

self.myScene.addPixmap(self.pixmap)

if __name__=='__main__':

app=QApplication(sys.argv)

mainWindow=MyView()

mainWindow.show()

t=threading.Thread(target=updatePic,args=(mainWindow,))

t.start()

sys.exit(app.exec_())

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。