首页 > 解决方案 > 使用 ENTER 将焦点移动到下一个 QLineEdit

问题描述

我写了一个应用程序来计算金额,通过输入硬币和钞票的数量来计算总价值。我可以使用“tab”键跳转到下一个文本字段,但我更愿意使用“enter”键。如何设置 'enter' 而不是默认的 'tab' 键以移动到下一个 QLineEdit 字段?

截屏

标签: pythonpyqt5

解决方案


您必须重写该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_())

推荐阅读