Python Barkod okutunca alt foruma geçmesi

Merhaba ;

Yeni başladığım bir proje var. Bu projede qtdesingerler bir form oluşturdum forumda yapmak istediğim barkod okutma işleminde 1. qlineedit okutunca imleç 2.qlineedit geçsin ve sonra butona geçsin

Bunu nasıl yapabilirim? Araştırmlarımda bir kaynak bulamadım aklımada bir fikir gelmedi yeniyim.

Senin için basit bir örnek yaptım. Bunu deneyebilirsin.

from PyQt5.QtWidgets import QDialog, QLineEdit, QPushButton, QApplication, QFrame,QVBoxLayout
import sys

class TestPenceresi(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)
        
        self.setFixedSize(355, 490)
        self.setStyleSheet("background-color: white;")

        self.frame = QFrame(self)
        self.frame.setFixedSize(355, 490)
        
        self.layout = QVBoxLayout(self.frame)
        

        self.textLine1 = QLineEdit()  
        self.textLine2 = QLineEdit()  
        self.buton = QPushButton("buton")
    

        self.layout.addWidget(self.textLine1)
        self.layout.addWidget(self.textLine2) 
        self.layout.addWidget(self.buton)


        self.show()

        
        self.textLine1.textChanged.connect(self.textChangedFonk1)
        self.textLine2.textChanged.connect(self.textChangedFonk2)

        self.buton.clicked.connect(lambda: print("butona basıldı"))
        
        
    def textChangedFonk1(self):
        # Eğer barkod numarası uzunluğu (karakter sayısı) sabit ve kullanıcı elle klavyeden giriş yapacaksa 
        # belirli karaktere ulaştıktan sonra diğer QLineEdit'gecmek için karakter sayısını kontrol etmek

        # Varsayalım ki barkod karakter sayısı 10 olsun
        if len(self.textLine1.text()) == 10:
            # Odak noktasını değiştirme ikinci lineEdit' yönlendirme
            self.textLine2.setFocus()
    
    def textChangedFonk2(self):
        # Eğer barkod numarası uzunluğu (karakter sayısı) sabit ve kullanıcı elle klavyeden giriş yapacaksa 
        # belirli karaktere ulaştıktan sonra diğer QLineEdit'gecmek için karakter sayısını kontrol etmek

        # Varsayalım ki barkod karakter sayısı 10 olsun
        if len(self.textLine2.text()) == 10:
            # Odak noktasını değiştirme buton üzerine yönlendirme
            self.buton.setFocus()

        


if __name__ == "__main__":
    app = QApplication(sys.argv)
    uygulama = TestPenceresi()
    uygulama.exec_()

Hocam teşekkürler olmuş lakin benim barkod karakter sayısı değişken bu 10 yerine “enter” tuş olarak ayarlayabilirmiyiz?
Barkod okutunca sonunda enter komutu gönderir diye biliyorum.

Bu fonksiyondaki if kullanımını kaldır ve enter tuşuyla yapmak istediğin fonksiyonu çağır.
Fakat burada şöyle bir problem ortaya çıkıyor: Kullanıcı klavyeden manuel giriş yaparsa her karakter girişinde yani sen tüm barkod karakterlerini yazamadan işlem tamamlanmış gibi davranacak. (Bu problem yalnızca manuel girişte ortaya çıkıyor. Barkod tarayıcıyla girişte sıkıntı olmayacaktır.)

Teşükler cevaplarınız için
Lakin özür dileyerek Örnek varmı?

Kodunuzu gönderirseniz yardımcı olabilirim

class veri_gir(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        ## Ekran çerçevesi
        flags = Qt.WindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.setWindowFlags(flags)
        
        self.cboperator()
        self.cbmodel()

    ########################################### Sayfa düzeni ##############################################################
        self.gripSize=10
        self.grip =QtWidgets.QSizeGrip(self)
        self.grip.resize(self.gripSize, self.gripSize)
    ########################################### Menu gizle aç ##############################################################
        self.ui.frame_ust.mouseReleaseEvent=self.menu()      

    ####### Üst menüler

        self.ui.bt_menu.clicked.connect(self.menu)
        self.ui.bt_kapat.clicked.connect(lambda: self.close())
        self.ui.bt_simgedurumu.clicked.connect(self.bt_simge)
        self.ui.bt_normalekran.clicked.connect(self.bt_normal)
        self.ui.bt_tamekran.clicked.connect(self.bt_tamekran)


        ## Sayfalar

        self.ui.bt_verigirisi.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page))
        self.ui.bt_verimlilik.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_2))
        self.ui.bt_rapor.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_3))
        self.ui.bt_duzenle.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_7))

    ####### İlk açılışta normal ekran butonu gizleme
        self.ui.bt_normalekran.hide()


        ## Üst simgeler
    def bt_simge(self):
        self.showMinimized()

    def bt_normal(self):
        self.showNormal()
        self.ui.bt_normalekran.hide()
        self.ui.bt_tamekran.show()

    def bt_tamekran(self):
        self.showMaximized()
        self.ui.bt_normalekran.show()
        self.ui.bt_tamekran.hide()

    ####### Görüntü sığdırma ayarı
    def resizeEbent(self,event):
        rect =self.rect()
        self.grip.move(rect.right() - self.gripSize, rect.bottom() - self.gripSize)        

    ####### Üst menü gizle aç ayarı

    def menu(self):
        if True:
            width = self.ui.frame_sol.width()
            normal =0
            if width==0:
                extender =150
            else:
                extender = normal 
            self.animation = QPropertyAnimation(self.ui.frame_sol, b"minimumWidth")
            self.animation.setDuration(300)
            self.animation.setStartValue(width)
            self.animation.setEndValue(extender)
            self.animation.setEasingCurve(QtCore.QEasingCurve.InOutQuart)
            self.animation.start() 

    ####### Mause ile programı hareket ettirme

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.__press_pos = event.pos()  

    def mouseReleaseEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.__press_pos = None

    def mouseMoveEvent(self, event):
        if self.__press_pos:  
            self.move(self.pos() + (event.pos() - self.__press_pos))

    ####### Veri Kaydetme
         
    def cbmodel(self):
        islem.execute("select UrunAciklamasi from UrunEkle")
        self.liste = islem.fetchall()
        self.liste.sort()
        for x in self.liste:
            self.ui.cbmodelekle.addItems(x)


    def cboperator(self):
        islem.execute("select OperatorKodu from OperatorEkle")
        self.liste = islem.fetchall()
        self.liste.sort()
        for x in self.liste:
            self.ui.cboperatorekle.addItems(x)
            self.ui.cbortakisoperator.addItems(x)        



        ## SHOW ==> MAIN WINDOW
        self.show()
        ## ==> END ##

Buyurun

from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5 import QtCore
import sys


class veri_gir(QMainWindow):
    def __init__(self):
        super().__init__()
        #self.ui = Ui_MainWindow()
        #self.ui.setupUi(self)

        self.setFixedSize(250, 150)

        ## Ekran çerçevesi
        flags = Qt.WindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.setAttribute(Qt.WA_TranslucentBackground, True) # şeffaf pencere
        self.setWindowFlags(flags)


### Pencere Ögeleri

        self.frame = QFrame(self)
        self.frame.setFixedSize(250, 150)
        self.frame.setStyleSheet("QFrame{background-color: rgb(200,200,200); border-radius: 10px;}")
        
        self.layout = QVBoxLayout(self.frame)
        self.layout.setContentsMargins(10, 15, 10, 16) # iç ögeler arası  boşluk
        

        self.textLine1 = QLineEdit()  
        self.textLine2 = QLineEdit()  
        self.buton = QPushButton("Ekle")

        self.textLine1.setFixedSize(230, 30)
        self.textLine2.setFixedSize(230, 30)
        

        self.textLine1.setStyleSheet("QLineEdit{border-radius: 8px; background-color: white}")
        self.textLine2.setStyleSheet("QLineEdit{border-radius: 8px; background-color: white}")
        self.buton.setStyleSheet("QPushButton{border-radius: 8px; background-color: white}")

        self.layout.addWidget(self.textLine1)
        self.layout.addWidget(self.textLine2) 
        self.layout.addStretch()
        self.layout.addWidget(self.buton)
    
        self.textLine1.textChanged.connect(self.textChangedFonk1)
        self.textLine2.textChanged.connect(self.textChangedFonk2)

        self.buton.clicked.connect(lambda: print("butona basıldı"))
        
        
    def textChangedFonk1(self):
        if len(self.textLine1.text()) > 0:
            # Odak noktasını değiştirme ikinci lineEdit' yönlendirme
            self.textLine2.setFocus()
    
    def textChangedFonk2(self):

        if len(self.textLine2.text()) > 0:
            self.setFocus()
            # işlem tamamlandı.
            self.urun_ekle_fonk()
            
    
    def urun_ekle_fonk(self):
        print("ürün eklendi")
        # Buraya yapmak istediğniz işlemizi kodlayınız.







        
      #  self.cboperator()
      #  self.cbmodel()

    ########################################### Sayfa düzeni ##############################################################
        self.gripSize=10
        self.grip = QSizeGrip(self)
        self.grip.resize(self.gripSize, self.gripSize)
    ########################################### Menu gizle aç ##############################################################
      #  self.ui.frame_ust.mouseReleaseEvent=self.menu()      

    ####### Üst menüler

        # self.ui.bt_menu.clicked.connect(self.menu)
        # self.ui.bt_kapat.clicked.connect(lambda: self.close())
        # self.ui.bt_simgedurumu.clicked.connect(self.bt_simge)
        # self.ui.bt_normalekran.clicked.connect(self.bt_normal)
        # self.ui.bt_tamekran.clicked.connect(self.bt_tamekran)


        ## Sayfalar

        # self.ui.bt_verigirisi.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page))
        # self.ui.bt_verimlilik.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_2))
        # self.ui.bt_rapor.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_3))
        # self.ui.bt_duzenle.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_7))

    ####### İlk açılışta normal ekran butonu gizleme
      #  self.ui.bt_normalekran.hide()


        ## Üst simgeler
    def bt_simge(self):
        self.showMinimized()

    def bt_normal(self):
        self.showNormal()
        self.ui.bt_normalekran.hide()
        self.ui.bt_tamekran.show()

    def bt_tamekran(self):
        self.showMaximized()
        self.ui.bt_normalekran.show()
        self.ui.bt_tamekran.hide()

    ####### Görüntü sığdırma ayarı
    def resizeEbent(self,event):
        rect =self.rect()
        self.grip.move(rect.right() - self.gripSize, rect.bottom() - self.gripSize)        

    ####### Üst menü gizle aç ayarı

    def menu(self):
        if True:
            width = 100   # self.ui.frame_sol.width()
            normal =0
            if width==0:
                extender =150
            else:
                extender = normal 
            # self.animation = QPropertyAnimation(self.ui.frame_sol, b"minimumWidth")
            # self.animation.setDuration(300)
            # self.animation.setStartValue(width)
            # self.animation.setEndValue(extender)
            # self.animation.setEasingCurve(QtCore.QEasingCurve.InOutQuart)
            # self.animation.start() 

    ####### Mause ile programı hareket ettirme

    def mousePressEvent(self, event):
        try:
            if event.button() == Qt.LeftButton:
                self.__press_pos = event.pos()  
        except:
            pass

    def mouseReleaseEvent(self, event):
        try:
            if event.button() == Qt.LeftButton:
                self.__press_pos = None
        except:
            pass

    def mouseMoveEvent(self, event):
        try:
            if self.__press_pos:  
                self.move(self.pos() + (event.pos() - self.__press_pos))
        except:
            pass

    ####### Veri Kaydetme
         
    def cbmodel(self):
        islem.execute("select UrunAciklamasi from UrunEkle")
        self.liste = islem.fetchall()
        self.liste.sort()
        for x in self.liste:
            self.ui.cbmodelekle.addItems(x)


    def cboperator(self):
        islem.execute("select OperatorKodu from OperatorEkle")
        self.liste = islem.fetchall()
        self.liste.sort()
        for x in self.liste:
            self.ui.cboperatorekle.addItems(x)
            self.ui.cbortakisoperator.addItems(x)        



        ## SHOW ==> MAIN WINDOW
        self.show()
        ## ==> END ##

if  __name__=="__main__":
    app = QApplication(sys.argv)
    screen = veri_gir()
    screen.show()
    sys.exit(app.exec_())

Çok Teşekkürler kardeşim Kendime göre uyarladım oldu sağulun