gpt4 book ai didi

python - QMessageBox.Yes/QMessageBox.No 的值

转载 作者:太空宇宙 更新时间:2023-11-04 00:24:21 24 4
gpt4 key购买 nike


我学习 PyQt5(这对我来说看起来很复杂),我想知道为什么 QMessageBox.Yes(或否)有一些特殊的值(value),对我来说它是 16384。这就是我的意思:

from PyQt5 import QApplication, QWidget, QMessageBox

class App(QWidget):
def message_box(self):
resp = QMessageBox.question(self, 'foo', 'bar', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
print(resp)

它打印 16384(如果您单击"is")或 65536(如果您单击“否”),为什么不是 True 或 False?我知道我稍后可以将它与 QMessageBox.YesQMessageBox.No 进行比较,但我想知道这些魔法值来自何处以及为何使用它们?

最佳答案

因为是和否不是唯一的选择。如果您想要是、否、取消和中止(它们对您的应用程序都有不同的含义)怎么办?你不能用一个 bool 值来表示那些。

因此,通常的做法是使用整数。当然,记住每个整数的含义很烦人,因此将它们存储在命名良好的变量中,以便您的代码保持可读性!

除了它们是 2 的幂(分别为 2^14 和 2^16)这允许使用“按位或”将它们组合成单个整数之外,所使用的特定值没有什么本质上的特殊之处操作,然后使用“按位与”从结果整数中提取。这是将选项标志组合到单个变量中的常用方法,因此您无需在每次添加选项时都向函数/方法添加新参数(在无法完成可选方法参数的语言中很重要)。如果您不知道,您已经在消息框构造函数中使用了按位或组合标志!

关于python - QMessageBox.Yes/QMessageBox.No 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47984705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com