Android Python PIL显示灰色窗口
我正在尝试从ADB获取android屏幕截图,并使用Python和PIL将其显示在窗口中(可能是枕头,我不太清楚) 代码非常简单:Android Python PIL显示灰色窗口,android,python,adb,python-imaging-library,Android,Python,Adb,Python Imaging Library,我正在尝试从ADB获取android屏幕截图,并使用Python和PIL将其显示在窗口中(可能是枕头,我不太清楚) 代码非常简单: class Viewer(object): def __init__(self): self.root = Tkinter.Tk() self.root.title('ADB connection') self.pane = None self.update() self.ro
class Viewer(object):
def __init__(self):
self.root = Tkinter.Tk()
self.root.title('ADB connection')
self.pane = None
self.update()
self.root.mainloop()
def update(self):
with open(os.devnull, 'w') as nul:
subprocess.check_call([adb, adb_option, 'shell', 'screencap -p /sdcard/scr.png'])
subprocess.check_call([adb, adb_option, 'pull', '/sdcard/scr.png'], stdout=nul)
tkimg = ImageTk.PhotoImage(Image.open('scr.png'))
if not self.pane:
self.pane = Tkinter.Label(self.root, image = tkimg)
self.pane.pack()
else:
self.pane.configure(image = tkimg)
self.root.after(timeout, self.update)
我找到了很多指南,代码在任何地方都大致相同
在我的例子中,它不起作用:加载图像,宽度和高度匹配,并显示正确大小的窗口,但不显示图像。该文件存在,并包含实际屏幕截图。如果我调试程序,图像对象看起来是正常的(至少大小是这样,我无法读取图像数据)
这似乎是解码或显示PNG数据时出现的问题。或者我丢失了一些参数,或者一些函数调用?我终于明白了问题所在:python在图像显示之前对其进行垃圾收集 我已将
tkimg
更改为self.tkimg
,现在它可以工作了
无论如何,谢谢。谢谢你没有解释的否决票。这正是我们所需要的。