Python 如何在PyQT中的所有行编辑之间自动更改焦点?
我在一个程序中有一个简单的加密代码生成器。 当用户输入第一个数字时,我希望焦点自动切换到下一行编辑器(见附件屏幕截图)。我找不到任何明显的方法可以做到这一点。 我是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
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),然后滚动到下一行编辑器。