Eingabe mit Barcode Scanner

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Antik
User
Beiträge: 16
Registriert: Mittwoch 6. Februar 2019, 07:58

Freitag 15. Februar 2019, 09:36

Hallo,
also erstmal im Vorraus ich bin Anfänger und Pragmat. Also das einzige was mir als erstes wichtig ist, ist die Funktion. Wenn diese Funktioniert kümmere ich mich um Optik Vollständigkeit und Übersichtlichkeit.

Mein Problem ist folgendes:
Ich möchte eine Benutzeroberfläche erschaffen, die auf einem Touchscreen in der Fertigung laufen soll. Wenn der pushButton_2 gedrückt wird soll sich ein fenster öffnen und der benutzer aufgefordert werden eine auftragsnummer einzugeben. Dies tut er mittels eines Barcode Scanners. Wenn das geschehen ist, soll sich das Fenster schließen und die nummer übergeben werden. Ohne die while schleife funktioniert das auch allerdings bringt die while schliefe das programm zum absturz. könnt Ihr mir helfen? Vielen Dank

Code: Alles auswählen

def schreibeCSV():
    dlg2.show()
    nr = dlg2.lineEdit.text()
    while nr=="":
        nr = dlg2.lineEdit.text()
        
app = QtWidgets.QApplication([])
dlg = uic.loadUi("tagid.ui")
dlg2 = uic.loadUi("nrscannen.ui")

dlg.pushButton_2.clicked.connect(schreibeCSV)

dlg.show()


app.exec()
Benutzeravatar
sparrow
User
Beiträge: 1315
Registriert: Freitag 17. April 2009, 10:28

Freitag 15. Februar 2019, 09:41

Was soll denn die Schleife?!?
Konfiguriere den Scanner so, dass er nach dem Scannen ein Newline sendet und reagiere mit einem returnPressed-Event darauf.

GUIs/Toolkits haben eigene Threads. Die kannst du nicht einfach in eine Endlosschleife schicken.
__deets__
User
Beiträge: 6197
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 15. Februar 2019, 09:54

Ich bin ja auch pragmatisch. Anfänger, die Hilfestellung eh ignorieren, weil sie meinen, es besser zu wissen, brauchen offensichtlich keine Hilfe. Und bekommen sie dann auch nicht. Win win!
Sirius3
User
Beiträge: 10347
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 15. Februar 2019, 09:56

GUIs arbeiten Event-basiert. Endlosschleifen funktionieren nicht. Normalerweise würde man aber auch den Input des Barcode-Scanners direkt überwachen (ob das direkt mit Qt geht, weiß ich nicht), so dass gar kein Button2-Push nötig ist. Bei Qt-Programmen oder GUIs allgemein, kommt man um Klassendefinitionen nicht drumherum. Mit Deinem pragmatischen Ansatz stößt Du jetzt schon an Deine Grenzen. Das lernen der Pythongrundlagen ist unumgänglich.
Antik
User
Beiträge: 16
Registriert: Mittwoch 6. Februar 2019, 07:58

Freitag 15. Februar 2019, 10:04

Vielen Dank für eure Hilfe. Ich hatte es bereits mit Klassen versucht bin dort aber leider noch nicht ganz durchgestiegen und dachte ich könnte es so vllt umgehen. Dann muss ich da jetzt doch nochmal ran. Trotzdem Danke für eure schnellen Antworten
Antworten