【发布时间】:2020-06-18 22:40:23
【问题描述】:
我写了一个应用程序来计算金额,通过输入硬币和钞票的数量来计算总价值。我可以使用“tab”键跳转到下一个文本字段,但我更愿意使用“enter”键。如何设置 'enter' 而不是默认的 'tab' 键以移动到下一个 QLineEdit 字段?
【问题讨论】:
我写了一个应用程序来计算金额,通过输入硬币和钞票的数量来计算总价值。我可以使用“tab”键跳转到下一个文本字段,但我更愿意使用“enter”键。如何设置 'enter' 而不是默认的 'tab' 键以移动到下一个 QLineEdit 字段?
【问题讨论】:
您必须重写 event() 方法,以便当它检测到 KeyPress 事件并且键为 Enter 时,然后调用 focusNextPrevChild():
import sys
from PyQt5 import QtCore, QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
lay = QtWidgets.QVBoxLayout(self)
for i in range(10):
le = QtWidgets.QLineEdit()
lay.addWidget(le)
def event(self, event):
if event.type() == QtCore.QEvent.KeyPress:
if event.key() in (QtCore.Qt.Key_Return, QtCore.Qt.Key_Enter):
self.focusNextPrevChild(True)
return super().event(event)
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
【讨论】: