我目前正在将一个大型应用程序从Py2/PySide 1.2.4移植到Py3/PySide2 5.13.0,我发现了一个与使用DeprecationWarning相关的QPixmapCache.find(key, pixmap)

c:\path\to\module.py:220: DeprecationWarning: QPixmapCache.find(const QString & key, QPixmap & pixmap) is deprecated
  if (QPixmapCache.find("image_key", pixmap) is False):

我想修正这个抨击警告,但是documentation并不是很有帮助,因为它:
实际上,有一个地方明确建议使用不推荐使用的函数。(PySide2.QtGui.QPixmapCache.find(key)
有两个static PySide2.QtGui.QPixmapCache.find(key, pixmap)条目
其中一个被列为已弃用。
另一个不是。
似乎对现代用法没有任何建议。(或者我没找到)。
那么,对于不推荐使用的PySide2.QtGui.QPixmapCache.find(key, pixmap),建议的修复方法是什么?

最佳答案

正如@ekhumoro指出的,它看起来像一个bug,但是以下方法当前使用QPixmapCache::键工作:

from PySide2 import QtGui

if __name__ == '__main__':
    import sys

    app = QtGui.QGuiApplication(sys.argv)

    filename = "test.png"

    key = QtGui.QPixmapCache.Key()
    pm  = QtGui.QPixmap()

    for i in range(100):
        pix = QtGui.QPixmapCache.find(key)
        if pix is None:
            pm.load(filename)
            key = QtGui.QPixmapCache.insert(pm)
            print("load from filename")
        else:
            pm = pix

输出:
load from filename

10-07 15:13