Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Python PIL显示灰色窗口_Android_Python_Adb_Python Imaging Library - Fatal编程技术网

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

我正在尝试从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.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
,现在它可以工作了


无论如何,谢谢。

谢谢你没有解释的否决票。这正是我们所需要的。