我试图从类方法传递从ImageGrab中获取的图像。但它返回None。 takeSS()内的im.show()有效。
import pyscreenshot as ImageGrab
class Manager():
def takeSS(self):
if __name__ == "__main__":
im = ImageGrab.grab(bbox=(0,0,1980,200))
im.show()
return im
m = Manager()
img = m.takeSS()
img.show()
控制台:
AttributeError: 'NoneType' object has no attribute 'show'
答案 0 :(得分:1)
你的方法中间有一个if __name__ == "__main__":
守卫。这是该测试的非常不寻常的地方。
除非此脚本作为主脚本运行,否则Manager.takeSS()
方法将始终返回None
,从而导致您的错误。
从那里完全删除if
测试。它可能会在课程的之外:
import pyscreenshot as ImageGrab
class Manager():
def takeSS(self):
im = ImageGrab.grab(bbox=(0,0,1980,200)) # X1,Y1,X2,Y2
im.show()
return im
if __name__ == "__main__":
m = Manager()
img = m.takeSS()
img.show()
if
测试中的代码现在只有在您将此模块用作脚本时才会运行。使用import yourmodule
时,相同的块将无法运行。