创建一个 QObject 子类的实例

2024-09-27 09:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有附加类方法QPixmap的子类:

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

^{pr2}$

甚至更短:

ipdb> Screenshot.grabWindow(desktop_widget.winId())
<PyQt4.QtGui.QPixmap object at 0x7f0f8154c438>

如何获取Screenshot实例?在


Tags: 实例方法rectimagemakewidget子类cls
1条回答
网友
1楼 · 发布于 2024-09-27 09:23:21

Screenshot继承自QPixmap的所有方法都将返回QPixmap,因此您需要显式地创建并返回Screenshot的实例。在

唯一真正的问题是避免效率低下的复制。但是,QPixmap提供了一个非常快速的复制构造函数来实现这一点,所以您只需要这样做:

class Screenshot(QtGui.QPixmap):
    @classmethod
    def make(cls):
        ...
        image = cls.grabWindow(...)
        return cls(image)

相关问题 更多 >

    热门问题