gpt4 book ai didi

python - 如何知道 QTextEdit 上的 Enter 键何时被按下

转载 作者:行者123 更新时间:2023-12-01 00:36:38 25 4
gpt4 key购买 nike

我正在使用 PyQt5 在 Python 上为客户端编写聊天 gui。我有一个 QTextEdit,客户端可以在其中写入消息。我想知道当焦点位于 QTextEdit 上时何时按下“Enter”键。

我尝试使用 installEventFilter 函数,但它检测到除 QTextEdit 之外的所有其他小部件上按下的按键。我可以做什么来解决这个问题?

def initUI(self):
# ...
self.text_box = QtWidgets.QTextEdit(self)
self.installEventFilter(self)
# ...

def keyPressEvent(self, qKeyEvent):
print(qKeyEvent.key())
if qKeyEvent.key() == Qt.Key_Return:
if self.text_box.hasFocus():
print('Enter pressed')

最佳答案

当您重写 keyPressEvent 时,您正在监听窗口的事件,而是将 eventFilter 安装到 QTextEdit,而不是像您在代码中所做的那样安装到窗口,并检查作为参数传递的对象是否是 QTextEdit:

def initUI(self):
# ...
self.text_box = QtWidgets.QTextEdit(self)
self.text_box.installEventFilter(self)
# ...

def eventFilter(self, obj, event):
if event.type() == QtCore.QEvent.KeyPress and obj is self.text_box:
if event.key() == QtCore.Qt.Key_Return and self.text_box.hasFocus():
print('Enter pressed')
return super().eventFilter(obj, event)

关于python - 如何知道 QTextEdit 上的 Enter 键何时被按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57698744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com