Problem mit Thread
Verfasst: Donnerstag 13. August 2009, 14:25
Hallo,
ich habe hier ein Code Schnipsel, welches offensichtlich nicht so funkioniert wie es sollte.
Ich habe nur Grundwissen in Python (ich programmiere sonst in ruby), aber ich glaube das hier folgendes Problem besteht:
Die Funktion "enroll()" startet einen Thread in dem die Funktion "enroll_runner()" aufgerufen wird, welche wiederum die Attribute "ip" und "ip_img" der Klasse "ScanDialog" setzt. Bevor aber die Attribute gesetzt werden können läuft der Code in der "enroll()" Funktion weiter und wenn die entsprechenden Attribute an die aufrufende Funktion zurückgegeben werden sollen gibt es folgende Fehlermeldung.
Kann mir jemand helfen diesen Code Schnipsel zum Laufen zu bringen?
Und was macht eigentlich dieses "self.response(1)" am Ende der "enroll_runner()" Funktion (kann dazu keine Dokumentation finden)?
Vielen Dank!
ich habe hier ein Code Schnipsel, welches offensichtlich nicht so funkioniert wie es sollte.
Code: Alles auswählen
class ScanDialog(gtk.Dialog):
def __init__(self, parent, device):
self.dev = device
gtk.Dialog.__init__(self, "Scan finger", parent,
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, None)
self.set_has_separator(False)
self.text_label = gtk.Label("Scan your finger now")
self.vbox.pack_start(self.text_label)
self.vbox.show_all()
def enroll(self):
thread.start_new_thread(self.enroll_runner, (None,))
gtk.Dialog.run(self)
return (self.fp, self.fp_img)
def enroll_runner(self, void_arg):
(self.fp, self.fp_img) = self.dev.enroll_finger()
self.response(1)
Die Funktion "enroll()" startet einen Thread in dem die Funktion "enroll_runner()" aufgerufen wird, welche wiederum die Attribute "ip" und "ip_img" der Klasse "ScanDialog" setzt. Bevor aber die Attribute gesetzt werden können läuft der Code in der "enroll()" Funktion weiter und wenn die entsprechenden Attribute an die aufrufende Funktion zurückgegeben werden sollen gibt es folgende Fehlermeldung.
Code: Alles auswählen
Traceback (most recent call last):
File "pyfprint_demo.py", line 219, in enroll
(fp,img) = dlg.enroll()
File "pyfprint_demo.py", line 66, in enroll
return (self.fp, self.fp_img)
AttributeError: 'ScanDialog' object has no attribute 'fp'
Und was macht eigentlich dieses "self.response(1)" am Ende der "enroll_runner()" Funktion (kann dazu keine Dokumentation finden)?
Vielen Dank!