PyQt QPlainTextEdit "Command + Backpace" 不会删除 MacOS 上的行

PyQt QPlainTextEdit "Command + Backpace" doesn't delete the line on MacOS

在 MacOs 上按 Command + Backspace 通常会删除当前行。 是否可以在 QPlainTextEdit 中重现此行为?它按预期与 QLineEdit.

一起工作

这是重现问题的最小示例:

from PyQt5.QtWidgets import *
from PyQt5.QtGui import QKeySequence


app = QApplication([])
text = QPlainTextEdit()
window = QMainWindow()
window.setCentralWidget(text)

window.show()
app.exec_()

我是运行以下的人: Python 3.6.10 PyQt5 5.14.1 苹果操作系统 10.14.6

您可能应该将 QPlainTextEdit 子类化并覆盖其 keyPressEvent。

据我所知,在 MacOS 上 command+backspace 删除了 左边的文本 当前光标位置,但也可以删除整行,无论如何。

无论如何:

class PlainText(QPlainTextEdit):
    def keyPressEvent(self, event):
        if event.key() == Qt.Key_Backspace and event.modifiers() == Qt.ControlModifier:
            cursor = self.textCursor()

            # use this to remove everything at the left of the cursor:
            cursor.movePosition(cursor.StartOfLine, cursor.KeepAnchor)
            # OR THIS to remove the whole line
            cursor.select(cursor.LineUnderCursor)

            cursor.removeSelectedText()
            event.setAccepted(True)
        else:
            super().keyPressEvent(event)