QMessageBox.Yes/QMessageBox.No 的值

2023-12-24


我学习 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(使用前将#替换为@)

QMessageBox.Yes/QMessageBox.No 的值 的相关文章

随机推荐

  • 在 R-Studio 中使用语法颜色打印

    在 R 中 我总是喜欢打印出脚本 因为它提供了一个很好的概述 并且可以调整最终的错误 我喜欢 R Studio 中的语法突出显示 因为它有助于阅读和快速理解代码 有没有办法打印出我在编辑器中看到的突出显示的文本 它不是 R Studio 解
  • 处理 Git 损坏的对象和树中的“有点 git”

    我尝试使用过滤器分支重写历史记录 以便使用以下命令删除占用 SHA 的少量内存 超过 300 MB git filter branch index filter git rm ignore unmatch cached
  • 数据转换(收集?)

    我有以下内容 id a b c d 1 10 20 33 42 2 30 20 32 42 3 34 24 35 32 4 32 24 35 25 5 22 14 35 36 但我宁愿以这种形式 只有列 a 和 b id aOrB valu
  • 在 C# Azure 函数 (v2) 中使用来自 Azure Key Vault 的不可导出客户端证书

    我正在尝试设置对外部 API 的客户端证书身份验证 这不可出口的客户端证书位于 Azure Key Vault 中 我的代码是应用服务计划中托管的 Azure v2 函数中的 C NET Core 由于客户端证书不可导出 因此我无法将其放入
  • 在apache中添加标头

    我在这台服务器上有 apache 和许多图像 例如 http test com images abc jpg我希望有可能这样做 如果用户像这样访问网址http test com images download abc jpgapache必须
  • 重新定位法律标签 ( MKAttributionLabel )

    我想将法律标签移至右侧 在 iOS 6 和 7 上 以下解决方案工作正常 但在 iOS 8 3 上似乎不起作用 我得到标签 然后用一个计时器 0 1秒 viewDidLayoutSubviews我称这个方法为 void moveLegalL
  • 我应该使用线程还是任务 - 多客户端模拟

    我正在编写一个客户端模拟程序 其中所有模拟客户端都针对服务器运行一些预定义的例程 这是一个在天蓝色中运行的具有四个实例的 Web 服务器 所有模拟客户端在连接到服务器后都运行相同的例程 任何时候我都想使用我的程序模拟 300 到 800 个
  • 将带点的线添加到 ggplot2 中的绘图中

    为了方便起见 我想编写一个函数 将线图和散点图添加到现有的图中 我定义 addlinetoplot lt function dataset varx vary p lt geom line data dataset aes string x
  • 如何使用express-validator npm 验证密码

    我正在使用 Node 和 Express Web 模块编写 REST API 为了验证我正在使用快速验证器npm 我想在密码字段上应用一些验证规则 如何使用快速验证器来实现它 我想申请密码的验证规则为 最小 8 个字符长 至少一个大写字母
  • MVC 3:将用户控件添加到 Razor 视图

    我有一个 DLL 其中包含一个用户控件 在 Web 窗体视图中我可以通过使用轻松使用它 但如何在 Razor 视图中执行此操作呢 您无法将服务器端控件添加到 Razor 视图 一般来说 在 ASP NET MVC 应用程序中这样做是非常糟糕
  • 如何在一个 git 存储库中查找最新的提交?

    我有一个git存储库 有很多分支很多提交 我想找到最新的10个提交 如何做到这一点 谢谢 如果你想提交所有分支 你需要 all 参数 用 10 将 git log 限制为 10 并使用 date order 告诉 git log 根据日期对
  • 从 S3 wagtail 提供静态文件和媒体文件

    我们将开始使用 S3 来托管我们的静态和媒体文件 有谁有一个很好的链接来描述如何用鹡鸰做到这两点 我们正在使用 Wagtail 1 9 我无法让他们两个同时工作 https wagtail io blog amazon s3 for med
  • Android 5.1.1 及更高版本 - getRunningAppProcesses() 仅返回我的应用程序包

    看来谷歌终于关闭了获取当前前台应用程序包的所有大门 棒棒糖更新后 杀死了getRunningTasks int maxNum http developer android com intl zh cn reference android a
  • 根据R和plotly中的范围制作堆积条形图

    我想在 R 中创建一个堆积条形图并使用 iris 数据集绘制 在 x 轴中 我想在代码中设置像下面的 iris limits 这样的限制 y 轴应该包含适合这些范围的所有 Sepal Length 值 我想将这些值作为单个向量传递 另外 如
  • 使用哈希图创建文本字数统计

    我正在尝试创建一个程序作为我自己的哈希图教程 我要求用户输入文本并尝试将其拆分为哈希图 然后如果单词重复则增加计数 这是我的程序 import java util import java lang import javax swing JO
  • 找出将 n 表示为两个有边界整数之和的方法数

    我正在玩 codefight 但我真的被困住了 到下面的有效问题 Problem 给定整数 n l 和 r 找到将 n 表示为两个整数 A 和 B 之和的方法数 使得 l A B r Example 对于 n 6 l 2 且 r 4 输出应
  • 从AWS S3下载文件时的文件编码问题

    我在 AWS S3 中有一个 CSV 文件 我试图在本地临时文件中打开该文件 这是代码 s3 Aws S3 Resource new bucket s3 bucket bucket name obj bucket object object
  • Linux 中的安全 Python 环境

    是否可以创建一个在Linux下安全运行任意Python脚本的环境 这些脚本应该是从不受信任的人那里收到的 并且可能太大而无法手动检查 一个非常暴力的解决方案是创建一个虚拟机并在每次启动不受信任的脚本后恢复其初始状态 太贵了 我想知道是否可以
  • C# 字典 ValueOrNull / ValueorDefault

    目前我正在使用 var x dict ContainsKey key dict key defaultValue 我想要某种方法让字典 key 对于不存在的键返回null 所以我可以写类似的东西 var x dict key default
  • QMessageBox.Yes/QMessageBox.No 的值

    我学习 PyQt5 对我来说看起来很复杂 我想知道为什么QMessageBox Yes 或没有 有一些特殊的价值 对我来说是16384 这就是我的意思 from PyQt5 import QApplication QWidget QMess