我正在尝试将我的脚本从 PyQt5 移植到 PyQt6。由于这个答案,我已经弄清楚了如何移植大部分东西,但是,我遇到了一个问题。
我发现 PyQt6 使用QtWidgets.QMessageBox.StandardButtons.Yes
而不是 PyQt5 的QtWidgets.QMessageBox.Yes
.
但是,当在 QMessageBox 打开后检查用户是否按下“是”时,替换QtWidgets.QMessageBox.Yes
为QtWidgets.QMessageBox.StandardButtons.Yes
不起作用(查看下面的示例)。
例子:
PyQt5:
reply = QtWidgets.QMessageBox()
reply.setText("Some random text.")
reply.setStandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
x = reply.exec_()
if x == QtWidgets.QMessageBox.Yes:
print("Hello!")
打印“你好!” 这里工作正常。(16384 == 16384)
PyQt6:
reply = QtWidgets.QMessageBox()
reply.setText("Some random text.")
reply.setStandardButtons(QtWidgets.QMessageBox.StandardButtons.Yes |
QtWidgets.QMessageBox.StandardButtons.No)
x = reply.exec()
if x == QtWidgets.QMessageBox.StandardButtons.Yes:
print("Hello!")
“你好!” 这里根本不打印。(16384 != StandardButtons.yes)
我知道我可以这样做:
x = reply.exec()
if x == 16384:
print("Hello!")
因为,在按下“是”后,QMessageBox 等于 16384(参见this),但我不想使用这种方法,而是使用类似 PyQt5 示例的方法。