【问题标题】:PyQt5: Keyboard shortcuts w/ QActionPyQt5:带有 QAction 的键盘快捷键
【发布时间】:2014-11-17 08:03:39
【问题描述】:

如何在 PyQt5 中实现键盘快捷键(运行函数)?我知道我应该以某种方式使用QAction,但我不能将两者放在一起,而且所有示例似乎都不适用于 PyQt5,而是 PyQt4。

【问题讨论】:

    标签: python pyqt keyboard-shortcuts python-3.4 pyqt5


    【解决方案1】:

    像这样使用QShortcutQKeySequence 类:

    import sys
    from PyQt5.QtCore import pyqtSlot
    from PyQt5.QtGui import QKeySequence
    from PyQt5.QtWidgets import QWidget, QShortcut, QLabel, QApplication, QHBoxLayout
    
    class Window(QWidget):
        def __init__(self, *args, **kwargs):
            QWidget.__init__(self, *args, **kwargs)
    
            self.label = QLabel("Try Ctrl+O", self)
            self.shortcut = QShortcut(QKeySequence("Ctrl+O"), self)
            self.shortcut.activated.connect(self.on_open)
    
            self.layout = QHBoxLayout()
            self.layout.addWidget(self.label)
    
            self.setLayout(self.layout)
            self.resize(150, 100)
            self.show()
    
        @pyqtSlot()
        def on_open(self):
            print("Opening!")
    
    app = QApplication(sys.argv)
    win = Window()
    sys.exit(app.exec_())
    

    【讨论】:

      【解决方案2】:

      根据您的需要,它可以更简单、更强大:

      QShortcut( 'Shift+Ins', tree_view ).activated.connect( lambda : tree_view.add_row( 'next sibling' ) )
      

      ...将字符串“下一个兄弟”作为参数传递给方法tree_view.add_row

      还可以查看QKeySequence 中的“标准快捷方式”部分:通常最好坚持特定于平台的约定(不要无意中覆盖它们……),除非有充分的理由不这样做。

      【讨论】:

        【解决方案3】:

        也可以简单地写

        my_action.setShortcut(QKeySequence("Ctrl+Shift+A"))
        

        如果您已经在别处定义了该操作。


        定义动作的示例如下所示:

        from aqt import mw
        
        def testFunction():
            showInfo("Hello action!")
        
        my_action = QAction("test", mw)
        my_action.triggered.connect(testFunction)
        my_action.setShortcut(QKeySequence("Ctrl+Shift+A"))
        

        【讨论】:

        • 您好请问my_action是什么或者是什么对象?我觉得你的回答很好!
        • 能否请您添加示例代码...您的回答对其他人非常有帮助:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多