当前位置: 首页 > 面试题库 >

如何检查是否按下了键盘修饰符(Shift,Ctrl,Alt)?

葛骏
2023-03-14
问题内容

我正在使用Qt
Designer构建UI,并且我希望按钮使用不同的修饰符执行不同的操作。因此,我认为我可以调用具有动态字符串属性的函数,这些函数将根据修饰符执行操作。

如果有人知道更简单的方法,我将不胜感激。


问题答案:

看起来您需要做的就是检查按钮处理程序中的keyboardModifiers,并根据需要选择其他操作。可以对各种修饰符进行“或”运算以检查多键组合:

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_())


 类似资料:
  • 问题内容: 在Java中,我有一个程序需要连续检查用户是否按下了键。所以在伪代码中,像 提前致谢! 问题答案: 在Java中,你不检查是否有键被按下,而不是你听到秒。实现目标的正确方法是注册一个,并实现它以维持所需密钥的状态: 然后,您可以随时使用: 当然,您可以使用相同的方法来实现键映射及其包裹在状态中的状态。

  • 问题内容: 我是Java的初学者,一直在研究如何检测用户是否按下了某个键(例如箭头键)。显然,有很多方法可以做到这一点,我发现此方法应该对我有用: 问题是我不知道什么是KeyEvent。 当我调用该方法并给我举个例子时,谁能告诉我在括号中加什么? PS:不要把我发送到其他站点,我可能已经看过了,他们只是让我更加困惑… 问题答案: public class KeyEvent extends Inpu

  • 问题内容: 在我的游戏中,我希望能够使用向右和向左Shift键来实现不同的功能。在Java(或另一种语言)中,是否有任何方法可以区分这两者? KeyEvent类只有VK_SHIFT,它既对应于左移键,也对应于右移键。同样的,,,,等。 我主要关心的是某人可能能够使用两个手指同时快速按下两个键,从而获得不公平的优势。我应该担心这个吗? 问题答案: 我找到了一个Java教程,其中包括Java WebS

  • 我知道并使用了很多绑定的语法,但是我怎么能直接检查事件对象并提取被按下的字母,例如'c'和修饰词,例如'Control'和'Alt'? 我试过这个 偷到Python和Tkinter编程,但它没有显示我正在按的最终修饰符

  • 我有一个Java函数,我想在其中测试控制键是否被按住。我该怎么做? 编辑:我正在使用摆动作为gui。

  • 我知道如何捕捉keyup和keydown事件。 我希望我的程序看到哪些修改键(例如:元键、控制键、alt键等)当前被按住,即使程序没有观察到这些键的按键事件。 我知道点击事件和其他事件可以告诉我当它们被触发时按下了哪些修改键,但我的程序不能等待一个修改键的出现。 我需要我的程序定期检查修饰符键(例如,每100毫秒)。我将如何做到这一点?如果有帮助,我的程序使用jQuery。