Python 如何在PyQT中的所有行编辑之间自动更改焦点?

Python 如何在PyQT中的所有行编辑之间自动更改焦点?,python,pyqt,Python,Pyqt,我在一个程序中有一个简单的加密代码生成器。 当用户输入第一个数字时,我希望焦点自动切换到下一行编辑器(见附件屏幕截图)。我找不到任何明显的方法可以做到这一点。 我是PyQT的新手,所以我想知道是否有人知道这是怎么可能的 谢谢 给你: import sys from PyQt5 import QtWidgets from PyQt5.QtWidgets import QMainWindow, QLabel, QLineEdit from PyQt5.QtWidgets import QPushBu

我在一个程序中有一个简单的加密代码生成器。 当用户输入第一个数字时,我希望焦点自动切换到下一行编辑器(见附件屏幕截图)。我找不到任何明显的方法可以做到这一点。 我是PyQT的新手,所以我想知道是否有人知道这是怎么可能的

谢谢

给你:

import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QLineEdit
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtCore import QSize    


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.setMinimumSize(QSize(320, 240))    
        self.setWindowTitle("Keyword") 
        self.anchor = []

        # Line Edit 1
        self.nameLabel = QLabel(self)
        self.nameLabel.setText('#1')
        self.line1 = QLineEdit(self)
        self.line1.move(80, 20)
        self.line1.resize(200, 32)
        self.nameLabel.move(20, 20)
        self.anchor.append(self.line1)

        # Line Edit 2
        self.nameLabel2 = QLabel(self)
        self.nameLabel2.setText('#2')
        self.line2 = QLineEdit(self)
        self.line2.move(80, 60)
        self.line2.resize(200, 32)
        self.nameLabel2.move(20, 60)
        self.anchor.append(self.line2)

        # Line Edit 3
        self.nameLabel3 = QLabel(self)
        self.nameLabel3.setText('#3')
        self.line3 = QLineEdit(self)
        self.line3.move(80, 100)
        self.line3.resize(200, 32)
        self.nameLabel3.move(20, 100)
        self.anchor.append(self.line3)

        # Line Edit 4
        self.nameLabel4 = QLabel(self)
        self.nameLabel4.setText('#4')
        self.line4 = QLineEdit(self)
        self.line4.move(80, 140)
        self.line4.resize(200, 32)
        self.nameLabel4.move(20, 140)
        self.anchor.append(self.line4)

        # Button
        pybutton = QPushButton('OK', self)
        pybutton.clicked.connect(self.clickMethod)
        pybutton.resize(200,32)
        pybutton.move(80, 200)        

        # Connect
        self.line1.textEdited.connect(lambda state, x=1: self.checkDigit(x))
        self.line2.textEdited.connect(lambda state, x=2: self.checkDigit(x))
        self.line3.textEdited.connect(lambda state, x=3: self.checkDigit(x))
        self.line4.textEdited.connect(lambda state, x=4: self.checkDigit(x))

    def checkDigit(self, data):
        try:
            if (int(self.anchor[data-1].text()) < 10):
                self.anchor[data].setFocus()
        except:
            pass

    def clickMethod(self):
        print("Your four digits are:" + 
              " " + self.line1.text() + 
              " " + self.line2.text() +
              " " + self.line3.text() +
              " " + self.line4.text())

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit( app.exec_() )
导入系统 从PyQt5导入QtWidgets 从PyQt5.qtwidts导入QMainWindow、QLabel、QLineEdit 从PyQt5.QtWidgets导入QPushButton 从PyQt5.QtCore导入QSize 类主窗口(QMainWindow): 定义初始化(自): QMainWindow.\uuuuu初始化\uuuuuu(自) 自设置最小大小(QSize(320240)) self.setWindowTitle(“关键字”) self.anchor=[] #行编辑1 self.namelab=QLabel(self) self.namelab.setText('#1') self.line1=QLineEdit(self) self.line1.移动(80,20) self.line1.调整大小(200,32) self.namelab.move(20,20) self.anchor.append(self.line1) #行编辑2 self.nameLabel2=QLabel(self) self.nameLabel2.setText('#2') self.line2=QLineEdit(self) self.line2.移动(80,60) self.line2.调整大小(200,32) 自我名称标签2.移动(20,60) self.anchor.append(self.line2) #行编辑3 self.nameLabel3=QLabel(self) self.nameLabel3.setText('#3') self.line3=QLineEdit(self) self.line3.move(80100) self.line3.调整大小(200,32) self.nameLabel3.move(20100) self.anchor.append(self.line3) #行编辑4 self.nameLabel4=QLabel(self) self.nameLabel4.setText('#4') self.line4=QLineEdit(self) self.line4.move(80140) self.line4.调整大小(200,32) 自我名称标签4.移动(20140) self.anchor.append(self.line4) #钮扣 pybutton=QPushButton('OK',自身) pybutton.clicked.connect(self.clickMethod) pybutton.调整大小(200,32) pybutton.移动(80200) #连接 self.line1.textdedited.connect(lambda状态,x=1:self.checkDigit(x)) self.line2.textdedited.connect(lambda状态,x=2:self.checkDigit(x)) self.line3.textdedited.connect(lambda状态,x=3:self.checkDigit(x)) self.line4.textdedited.connect(lambda状态,x=4:self.checkDigit(x)) def校验位(自身、数据): 尝试: 如果(int(self.anchor[data-1].text())<10): self.anchor[data].setFocus() 除: 通过 def clickMethod(自): 打印(“您的四位数字是:”+ “”+self.line1.text()+ “”+self.line2.text()+ “”+self.line3.text()+ “”+self.line4.text()) 如果名称=“\uuuuu main\uuuuuuuu”: app=qtwidts.QApplication(sys.argv) mainWin=MainWindow() mainWin.show() sys.exit(app.exec_())
您的描述令人困惑。何时输入数字或数字?数字是{0,1,2,3,4,5,6,7,8,9}等,数字是数字的组合。我猜您需要在QLineEdit上使用setFocus()。如果你上传你的代码,我可能会引导你找到一个解决方案。也许这个答案对你也有帮助@NicholasTJ类似于
self.le1.textdedited.connect(self.le2.setFocus)
用于行编辑1、2、3?@Guimoute Yes:)这就是我的想法,干杯@eyllanesc为这一混乱道歉。用户将输入一位数字(0-9),然后滚动到下一行编辑器。