【发布时间】:2020-11-18 17:36:38
【问题描述】:
我有一个元素 editorBox,它是 PyQt5 元素类型 QPlainTextEdit。我的目标是在按下热键Shift + Return 时调用一个函数,而我对这个函数的目标是它还将文本插入到 editorBox 元素中(这不是我强调的部分,它相当容易与.insertPlainText() 方法有关)。
我已经完成了搜索,我能找到的最接近的结果是将QShortcut 和QKeySequence 配对使用,如下所示:
# Initialize the QShortcut class
self.keybindShiftEnter = QShortcut(QKeySequence("Shift+Return"), self)
# Connect the shortcut event to a lambda which executes my function
self.keybindShiftEnter.activated.connect(lambda: self.editorBox.insertPlainText("my text to insert"))
为了澄清,我尝试在QKeySequence 构造函数中使用其他字符,例如Ctrl+b,并且我已经成功了。奇怪的是,只有 Shift+Return 组合对我不起作用。
我已经分析了一个与我的错误有关的问题。我看过的一些帖子:
【问题讨论】:
-
实现keyPressEvent 是解决方案,只要按键不匹配shift-enter,您只需调用基类实现即可。
标签: python pyqt5 keyboard-shortcuts qkeysequence qshortcut