如何检查是否按下了键盘辅助键(Shift、Ctrl 或 Alt)?

2023-12-19

我正在构建一个用户界面Qt创建者 https://en.wikipedia.org/wiki/Qt_Creator我希望按钮能够使用不同的修饰符执行不同的操作。所以我想我可以调用具有动态字符串属性的函数,这些函数将根据修饰符执行操作。

有没有更简单的方法来做到这一点?


看起来您需要做的就是检查键盘修饰符 https://doc.qt.io/qt-5/qguiapplication.html#keyboardModifiers在按钮处理程序中,然后根据需要选择不同的操作。这各种修饰符 https://doc.qt.io/qt-5/qt.html#KeyboardModifier-enum可以进行“或”运算以检查多键组合:

PyQt5:

import sys
from PyQt5 import QtCore, QtWidgets

class Window(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.button = QtWidgets.QPushButton('Test')
        self.button.clicked.connect(self.handleButton)
        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(self.button)

    def handleButton(self):
        modifiers = QtWidgets.QApplication.keyboardModifiers()
        if modifiers == QtCore.Qt.ShiftModifier:
            print('Shift+Click')
        elif modifiers == QtCore.Qt.ControlModifier:
            print('Control+Click')
        elif modifiers == (QtCore.Qt.ControlModifier |
                           QtCore.Qt.ShiftModifier):
            print('Control+Shift+Click')
        else:
            print('Click')

if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec())

PyQt4:

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.button = QtGui.QPushButton('Test')
        self.button.clicked.connect(self.handleButton)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.button)

    def handleButton(self):
        modifiers = QtGui.QApplication.keyboardModifiers()
        if modifiers == QtCore.Qt.ShiftModifier:
            print('Shift+Click')
        elif modifiers == QtCore.Qt.ControlModifier:
            print('Control+Click')
        elif modifiers == (QtCore.Qt.ControlModifier |
                           QtCore.Qt.ShiftModifier):
            print('Control+Shift+Click')
        else:
            print('Click')

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查是否按下了键盘辅助键(Shift、Ctrl 或 Alt)? 的相关文章

随机推荐

  • 如何在 OSGi 中实现 ManagedServiceFactory?

    我目前正在尝试设置我自己的实现ManagedServiceFactory 这就是我想要做的 我需要在每个配置的基础上使用某些服务的多个实例 在 DS 中 组件工作得很好 但现在我发现这些服务应该根据某些外部资源的可用性来处理自己的生命周期
  • 推送大型 github 存储库失败,并显示“无法推送到不合格的目的地:master”

    我有一个大型 git 存储库 从 SVN 存储库创建 我想将其推送到 github 鉴于它很大 我不能尝试直接推送它 因为它会因 打包太大 错误而失败 到目前为止一切都很好 我可以一次推送一个提交 但当我尝试这样做时 发生的事情是 git
  • 内容脚本中的 IFrame。如何与main.js通信?

    我的 Firefox 插件从内容脚本 page mod 打开 Fancybox 类型 iframe 在 Fancybox 中我显示了我自己的 HTML 页面 my fancybox stuff html 位于我自己的服务器中 现在 从my
  • 获取指向成员 std::string::size 的指针无法与 libc++ 链接,但可以与 libstdc++ 一起使用

    我正在做一个需要使用 libc 的项目 我遇到了以下问题 当我尝试编译以下代码时 include
  • 用于将复制集本地备份到 Windows Server 的 MongoDB 脚本

    我想通过 Windows 2012 服务器运行的复制集对 MongoDB 进行每日备份 最终目标是获取每日备份并将备份写入远程或本地共享 Windows 我可以批处理 mongodump 命令吗 任何帮助将不胜感激 抱歉 有点晚了 但以下内
  • 使用 hdiutil 或其他工具向 DMG 添加背景图像/颜色? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用命令行工具为 Mac OS X 创建美观的 DMG https stackoverflow com questions 96882 how do i create a nice looking
  • 指定的任务可执行位置......csc.exe无效错误

    我有一个关于 TFS 的项目 它可以在除了我的机器之外的其他人的机器上运行 构建时 我收到图像中可以看到的错误 指定的任务可执行位置 csc exe 无效 目前正在尝试修复 VS 2017 根据该消息 似乎csc exe已经损坏 只需尝试以
  • 允许唤醒计时器 Windows 7/Vista

    我需要允许唤醒计时器 计算机从睡眠 休眠状态唤醒 以将所有电源计划设置为已启用 我尝试了 Win32 PowerSetting 但它只适用于英文版的 Windows 我需要使用 NET 2 0 感谢您的回复 我怀疑您可以使用对 powrpr
  • Rust 参考在仍然借用的情况下被丢弃在这里

    问题 我从一个方法中收到 XXXXXXX 在仍借用时被丢弃 错误 其中 XXXXXXX 在方法结束时有效 这很好 但 Rust 不必要地期望它与输入引用一样长因为它们有明确的生命周期 这是一些设置信息 我有一个结构 其中迭代文本内容中所有找
  • 无法使用 Directus v8 API 获取临时令牌

    我正在使用最新的 Directus v8 版本 我安装了它并用它来设计我的架构 一切似乎都正常 但是当我尝试获取临时令牌来验证用户身份时 我收到一个关于未授权的奇怪错误 同时 AUTH 端点没有不需要先前授权的用户 显然 我的 Direct
  • WhitePages API 的替代方案? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 WhitePages API developer whitepages com 来获取电话类
  • PHP 中的 AWS Cloudfront SetCookie

    我正在尝试设置 cookie 以查看来自 AWS Cloudfront 的私有内容 http docs aws amazon com AmazonCloudFront latest DeveloperGuide private conten
  • 应用程序启动期间的键盘修改器

    我想捕获在应用程序启动期间是否按下了修改键 以确定全屏或窗口化 在主窗口构造函数中 我尝试检查键盘 修饰符 http msdn microsoft com en us library system windows input keyboar
  • JavaScript 的日期范围限制

    有两个文本类型的输入字段 用于以 mm dd yyy 格式写入开始日期和结束日期 我需要一个 JavaScript 函数来检查输入日期之间的日期范围间隔是否不超过 14 天 并且最大日期应该是当前日期 有没有插件或快速解决方案 我尝试使用
  • 调整大小之前传单地图无法正确显示

    我在 Binding scala 上使用带有 scalajs leaflet 外观的 Leaflet 并且地图初始化 显示不正确 为了重现这个问题 我准备了一个lihaoyi workbench页面类似于 scalajs leaflet 中
  • JQuery UI:在可放置放置时取消可排序

    我正在使用 JQuery 1 5 1 和 JQuery UI 1 8 11 我已经为许多项目添加了可排序 这里的任务是允许拖动排序 这一切都很好 但我也想合并 droppable 以便该项目可以被拖放到 复制我 区域 那里的任务将是复制该项
  • 获取 Windows 服务中的计算机名称?

    在 NET Windows 服务 C 中 如何获取计算机名称 这是一个可靠的方法 还是应该将其包装在 try catch 中 看着那 这环境等级 http msdn microsoft com en us library system en
  • glassPane 不阻止输入

    我用 java 构建了一个小型 GUI 游戏 有时我使用 glassPane 暂时阻止所有鼠标输入 我以前使用过 glassPane 没有任何问题 但这次它不会阻止鼠标输入 因此 当 glassPane 启用时 我仍然可以按下 conten
  • Django:无法运行自定义命令

    我编写了一个简单的自定义命令 hello py from django core management base import NoArgsCommand class Command NoArgsCommand help prints he
  • 如何检查是否按下了键盘辅助键(Shift、Ctrl 或 Alt)?

    我正在构建一个用户界面Qt创建者 https en wikipedia org wiki Qt Creator我希望按钮能够使用不同的修饰符执行不同的操作 所以我想我可以调用具有动态字符串属性的函数 这些函数将根据修饰符执行操作 有没有更简