我学习 PyQt5 (对我来说看起来很复杂),我想知道为什么QMessageBox.Yes(或没有)有一些特殊的价值,对我来说是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(如果单击“是”)或 65536(如果单击“否”),为什么不打印 True 或 False?
我明白我可以稍后将其与QMessageBox.Yes or QMessageBox.No,但我想知道这些神奇值从哪里来以及为什么使用它们?
因为“是”和“否”并不是唯一的选择。如果您想要“是”、“否”、“取消”和“中止”(这些对您的应用程序都有不同的含义)怎么办?你不能用一个布尔值来表示它们。
因此,通常的做法是使用整数。当然,记住每个整数的含义很烦人,因此它们存储在命名良好的变量中,以便您的代码保持可读!
使用的特定值本质上没有什么特殊之处,除了它们是 2 的幂(分别为 2^14 和 2^16),这允许使用“按位或”运算将它们组合成单个整数,然后随后使用“按位与”从结果整数中提取。这是将选项标志组合到单个变量中的常见方法,因此您不需要每次添加选项时都向函数/方法添加新参数(在无法完成可选方法参数的语言中很重要)。如果您不知道,您已经在消息框构造函数中使用了按位或来组合标志!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)