1
我有一个QPixmap
子额外类方法make
:铸造一个QObject子类的实例
class Screenshot(QtGui.QPixmap):
@classmethod
def make(cls):
desktop_widget = QtGui.QApplication.desktop()
image = cls.grabWindow(
desktop_widget.winId(), rect.x(), rect.y(), rect.width(), rect.height())
import ipdb; ipdb.set_trace()
image.save()
return image
当我打电话Screenshot.make()
正确的类cls
传递,而是通过cls.grabWindow
创建的实例不是Screenshot
:
ipdb> ...py(30)make()
29 import ipdb; ipdb.set_trace()
---> 30 image.save()
31 return image
ipdb> cls
<class 'viewshow.screenshot.Screenshot'>
ipdb> image
<PyQt4.QtGui.QPixmap object at 0x7f0f8c4a9668>
更短:
ipdb> Screenshot.grabWindow(desktop_widget.winId())
<PyQt4.QtGui.QPixmap object at 0x7f0f8154c438>
如何获得Screenshot
实例?
看起来不错,但不工作:后'图片= CLS(图片)''图像.size()'为空。可以在PyQt中的错误。现在'image .__ class__ = cls'起作用。 – warvariuc
哦,'image = cls(image)'调用我的'__init__',而不是从C++重载。 – warvariuc
@warvariuc。我的答案完美无缺。你的'__init__'函数(在你的问题中没有显示)显然被破坏了,可能是因为它没有正确调用基类“__init__”。 – ekhumoro