我正在将我的一个脚本从PyQt5迁移到PyQt6。感谢这个答案,我已经找出了如何移植大部分的代码,但是我遇到了一个问题。
我已经发现,PyQt6使用
但是,在打开QMessageBox后检查用户是否按下"Yes"时,将
我已经发现,PyQt6使用
QtWidgets.QMessageBox.StandardButtons.Yes
代替PyQt5的QtWidgets.QMessageBox.Yes
。但是,在打开QMessageBox后检查用户是否按下"Yes"时,将
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!")
这里正常打印“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!")
这里的 "Hello!" 根本没有被打印出来。(16384 != StandardButtons.yes)
我知道我可以这样做:
x = reply.exec()
if x == 16384:
print("Hello!")
因为在按下"Yes"之后,QMessageBox等于16384 (请参阅此处),但我不想使用这种方法,而是想使用类似PyQt5示例的方式。