如何通过按键事件PyQt5将textEdit小部件连接到函数



我想在用户在小部件内按Return或Enter键时将文本保存在textit小部件中。但是我不确定如何注册用户在小部件的边界内按了一个特定的键

。returnPressed只适用于lineedit。我试图利用keyPressEvent(),但是,据我所知,这是一个独立的函数,我不知道如何将它连接到文本小部件。

如果我使用Tkinter,我会这样写:

entry.bind("<Return>", entry_get)

但是我不知道如何在PyQt5中做到这一点。

只覆盖keyPressEvent:

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QTextEdit

class TextEdit(QTextEdit):
def keyPressEvent(self, event):
super().keyPressEvent(event)
if event.key() in (Qt.Key_Enter, Qt.Key_Return):
print("save")

def main():
app = QApplication([])
w = TextEdit()
w.show()
app.exec_()

if __name__ == "__main__":
main()

事件过滤器也可以应用相同的逻辑。使用qshortcut不是一个选项,因为它消耗事件阻止QTextEdit添加行。

最新更新