PyQt5,如何为QLineEdit和QButton注册键盘事件

时间:2019-01-28 16:22:28

标签: python pyqt5

我有3个QLineEdits和一个Submit按钮的GUI。默认情况下,我可以使用TAB键移动到下一个QLineEdit。但是,我如何注册RETURN键作为触发器以移至下一个QLineEdit。另外,我有3个QLineEdit,在最后一个QLineEdit的结尾,我希望注册RETURN来触发QButton。

可以请教如何做吗?我可以使用QShortcut触发文本框3的提交功能。但是我不知道如何注册texbox1突出显示textbox2,然后将textbox2突出显示为textbox3。

最好的问候。

from PyQt5.QtWidgets import QWidget, QMainWindow, QVBoxLayout, QHBoxLayout, QGroupBox, QApplication, QLabel, QLineEdit, QPushButton
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QKeyEvent
class App(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(10, 200, 400, 200)
        self.createTestGroupBox()
        self.mainLayout = QVBoxLayout()
        self.mainLayout.addWidget(self.testGroupBox)
        self.setCentralWidget(QWidget(self))
        self.centralWidget().setLayout(self.mainLayout)
        self.show()

    def createTestGroupBox(self):
        self.testGroupBox = QGroupBox("Group Box")
        self.nameLabel = QLabel()
        self.nameLabel.setText("Name:")
        self.colorLabel = QLabel()
        self.colorLabel.setText("Object:")
        self.numberLabel = QLabel()
        self.numberLabel.setText("Number:")

        # user input
        self.textbox1 = QLineEdit(self)
        self.textbox2 = QLineEdit(self)
        self.textbox3 = QLineEdit(self)
        self.shortcut = QShortcut(Qt.Key_Return, self.textbox3, self.submit)

        # submit button 
        self.submitBtn = QPushButton('Submit')
        self.submitBtn.clicked.connect(self.submit)

        # Input Labels 
        inputLabelLayout = QHBoxLayout()
        inputLabelLayout.addWidget(self.nameLabel)
        inputLabelLayout.addWidget(self.colorLabel)
        inputLabelLayout.addWidget(self.numberLabel)

        # Input boxes
        inputLayout = QHBoxLayout()
        inputLayout.addWidget(self.textbox1)
        inputLayout.addWidget(self.textbox2)
        inputLayout.addWidget(self.textbox3)

        # Buttons 
        btnLayout = QHBoxLayout()
        btnLayout.addWidget(self.submitBtn)

        layout = QVBoxLayout()
        layout.addLayout(inputLabelLayout)
        layout.addLayout(inputLayout)
        layout.addLayout(btnLayout)
        self.testGroupBox.setLayout(layout)


    def submit(self):
        print ("Submit Button Press")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_()) 

0 个答案:

没有答案