gpt4 book ai didi

python - 使用 keyPressEvent 捕捉输入或返回

转载 作者:太空狗 更新时间:2023-10-29 22:22:42 25 4
gpt4 key购买 nike

我有一个简单的表单,其中包含一些组合、标签、按钮和一个 QTextEdit。

我尝试使用 keyPressEvent 捕捉输入或返回键,但由于某些原因我无法捕捉。然而,我也使用的 ESC 键被识别。

这是一段代码:

 def keyPressEvent(self, e):
print e.key()
if e.key() == QtCore.Qt.Key_Return:
self.created.setText('return')
if e.key() == QtCore.Qt.Key_Enter:
self.created.setText('enter')
if e.key() == QtCore.Qt.Key_Escape:
self.cmbEdit = not(self.cmbEdit)
if self.cmbEdit:

等...

我错过了什么吗?

最佳答案

从您的代码中看不完全清楚,但看起来您可能已经为表单重新实现了 keyPressEvent,而当您需要为文本编辑本身执行此操作时。

解决这个问题的一种方法是使用 event filter ,有时可以更灵活,因为它避免了必须对您感兴趣的小部件进行子类化。下面的演示脚本显示了如何使用它的基础知识。需要注意的重要一点是,事件过滤器应该返回 True 以停止任何进一步处理,返回 False 以传递事件以进行进一步处理,否则就丢弃通过基类事件过滤器。

from PySide import QtCore, QtGui

class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.edit = QtGui.QTextEdit(self)
self.edit.installEventFilter(self)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.edit)

def eventFilter(self, widget, event):
if (event.type() == QtCore.QEvent.KeyPress and
widget is self.edit):
key = event.key()
if key == QtCore.Qt.Key_Escape:
print('escape')
else:
if key == QtCore.Qt.Key_Return:
self.edit.setText('return')
elif key == QtCore.Qt.Key_Enter:
self.edit.setText('enter')
return True
return QtGui.QWidget.eventFilter(self, widget, event)

if __name__ == '__main__':

import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(500, 300, 300, 300)
window.show()
sys.exit(app.exec_())

关于python - 使用 keyPressEvent 捕捉输入或返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20420072/

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