首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找出按下了哪个QKeySequence

找出按下了哪个QKeySequence
EN

Stack Overflow用户
提问于 2019-03-16 13:02:52
回答 1查看 302关注 0票数 1

我正在使用PySide2,我希望有多个快捷键来执行相同的功能,但也要取决于按下的键。

我尝试将函数链接到QMainWindow中:

代码语言:javascript
复制
QtWidgets.QShortcut(QtGui.QKeySequence("1"),self).activated.connect(self.test_func)
QtWidgets.QShortcut(QtGui.QKeySequence("2"),self).activated.connect(self.test_func)

以便它们都执行该函数。

代码语言:javascript
复制
def test_func(self, signal):
    print(signal)

希望在按下"1“键时打印(”1“),在按下第二个键时打印(”2“)。当我尝试运行此命令并按下键1和2时,出现以下错误:

代码语言:javascript
复制
TypeError: test_func() missing 1 required positional argument: 'signal'

我如何才能做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-16 13:09:42

激活的信号不发送任何信息,因此一种选择是获取发出信号的对象(即QShortcut)以获取QKeySequence,并从后者获取字符串:

代码语言:javascript
复制
from PySide2 import QtCore, QtGui, QtWidgets

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        QtWidgets.QShortcut(QtGui.QKeySequence("1"), self, activated=self.test_func)
        QtWidgets.QShortcut(QtGui.QKeySequence("2"), self, activated=self.test_func)

    @QtCore.Slot()
    def test_func(self):
        shorcut = self.sender()
        sequence = shorcut.key()
        print(sequence.toString())

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55193612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档