我正在尝试将我的脚本从 PyQt5 移植到 PyQt6。由于这个答案,我已经弄清楚如何移植大部分内容,但是,我遇到了一个问题。
我发现 PyQt6 使用QtWidgets.QMessageBox.StandardButtons.Yes而不是 PyQt5QtWidgets.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!")
Run Code Online (Sandbox Code Playgroud)
打印“你好!” 这里工作正常。(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!")
Run Code Online (Sandbox Code Playgroud)
“你好!” 这里根本不打印。(16384 != StandardButtons.yes)
我知道我可以这样做:
x = reply.exec()
if x == 16384:
print("Hello!")
Run Code Online (Sandbox Code Playgroud)
因为,按“是”后,QMessageBox 等于 …