<p>建议的修复方法是避免将pixmap作为第二个参数传递给<code>find</code>,因为实际上并不需要它(见下文)。因此,您的代码应该简单地更改为:</p>
<pre><code>pixmap = QPixmapCache.find("image_key")
if pixmap is None:
...
</code></pre>
<hr/>
<p>包含第二个参数的方法似乎是PySide2中的一个bug(或错误特性)。它可能只应该实现这两个重载:</p>
<ul>
<li><blockquote>
<p><strong>find</strong>(str) -> QPixmap</p>
</blockquote></li>
<li><blockquote>
<p><strong>find</strong>(QPixmapCache.Key) -> QPixmap</p>
</blockquote></li>
</ul>
<P>其他方法更具体的C++,它们当前定义如下:</P>
<ul>
<li><blockquote>
<p><strong>find</strong>(const QString &key, QPixmap *pixmap) -> bool</p>
</blockquote></li>
<li><blockquote>
<p><strong>find</strong>(const QPixmapCache::Key &key, QPixmap *pixmap) -> bool</p>
</blockquote></li>
</ul>
<p>这里的第二个参数是一个<em>指针</em>,Qt将该指针设置为找到的pixmap。必须在C++中这样做,因为没有办法返回一个^ {< 2CD> }的元组,正如Python中可能已经做过的那样。同样,在PySide中实现这样的方法也没有什么意义,因为Python中没有指针。(我猜不推荐使用的方法在传入的参数上使用类似于<a href="https://doc.qt.io/qt-5/qpixmap.html#swap" rel="nofollow noreferrer">QPixmap.swap</a>的东西来获得类似的行为)。你知道吗</p>
<p>当前API/文档中的混乱应该在<a href="http://bugreports.qt.io/browse/PYSIDE" rel="nofollow noreferrer">PySide bug tracker</a>上报告。作为参考,PyQt5只实现上面显示的前两个方法,这似乎是最python的方式。很难找到一个好的理由来解释为什么应该包含任何其他重载(除了向后兼容性)。你知道吗</p>