[英]PyQt5: Keyboard shortcuts w/ QAction
如何在 PyQt5 中實現鍵盤快捷鍵(運行函數)? 我看到我應該以一種或另一種方式使用QAction
,但我不能將兩者和兩者放在一起,而且所有示例似乎都不適用於 PyQt5,而是 PyQt4。
像這樣使用QShortcut
和QKeySequence
類:
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.