<p>这有点奇怪。根据<a href="https://doc.qt.io/qt-6.0/qmessagebox.html#exec" rel="nofollow noreferrer">QMessageBox.exec</a>的文件:</p>
<blockquote>
<p>When using a QMessageBox with standard buttons, this function returns
a StandardButton value indicating the standard button that was
clicked.</p>
</blockquote>
<p>您使用的是标准按钮,因此应该返回一个<code>QMessageBox.StandardButtons</code>枚举</p>
<p>还值得一提的是,在PyQt5中比较整数和枚举不是问题,因为枚举是用<code>enum.IntEnum</code>实现的。现在,它们是用<code>enum.Enum</code>实现的。从<a href="https://riverbankcomputing.com/software/pyqt/download" rel="nofollow noreferrer">Riverbank Computing website</a>开始:</p>
<blockquote>
<p>All enums are now implemented as enum.Enum (PyQt5 used enum.IntEnum
for scoped enums and a custom type for traditional named enums). PyQt5
allowed an int whenever an enum was expected but PyQt6 requires the
correct type.</p>
</blockquote>
<p>然而,由于某种原因,<code>QMessageBox.exec</code>返回一个整数(我刚刚用<code>PyQt6==6.0.0</code>尝试过它)</p>
<p>目前,您可以通过故意从返回的整数构造枚举对象来解决此问题:</p>
<pre><code>if QtWidgets.QMessageBox.StandardButtons(x) == QtWidgets.QMessageBox.StandardButtons.Yes:
print("Hello!")
</code></pre>
<p>而且,由于您正在比较枚举,我建议使用<code>is</code>而不是<code>==</code></p>