簡體   English   中英

PyQt5:帶 QAction 的鍵盤快捷鍵

[英]PyQt5: Keyboard shortcuts w/ QAction

如何在 PyQt5 中實現鍵盤快捷鍵(運行函數)? 我看到我應該以一種或另一種方式使用QAction ,但我不能將兩者和兩者放在一起,而且所有示例似乎都不適用於 PyQt5,而是 PyQt4。

像這樣使用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_())

也可以簡單地寫

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"))

根據您的需要,它可以更簡單、更強大:

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

... 將字符串“下一個兄弟”作為參數傳遞給方法tree_view.add_row

另請查看QKeySequence 中的“標准快捷方式”部分:通常最好堅持特定於平台的約定(而不是無意中覆蓋它們......),除非有充分的理由不這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM