小编Des*_*ond的帖子

PyQt6 的“QMessageBox.Yes”替代方案

我正在尝试将我的脚本从 PyQt5 移植到 PyQt6。由于这个答案,我已经弄清楚如何移植大部分内容,但是,我遇到了一个问题。

我发现 PyQt6 使用QtWidgets.QMessageBox.StandardButtons.Yes而不是 PyQt5QtWidgets.QMessageBox.Yes.

但是,当检查用户在 QMessageBox 打开后是否按下“是”时,替换QtWidgets.QMessageBox.YesQtWidgets.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 等于 …

python pyqt pyqt5 pyqt6

6
推荐指数
2
解决办法
7380
查看次数

标签 统计

pyqt ×1

pyqt5 ×1

pyqt6 ×1

python ×1