2017-04-22 8 views
0

Ich erstelle eine einfache Anwendung, um Aufgaben zu verwalten.AttributeError: Objekt 'NoneType' hat kein Attribut 'Betreff'

Todo

Ich versuche, den Text und die Combobox-Widgets mit dem gewählten Artikel die Attribute zu füllen, aber keinen Erfolg haben, weil anscheinend wird es keine Rückkehr.

Ich erhalte:

/usr/bin/python3.5 /home/cali/PycharmProjects/Todo/Todo.py 
Exception in Tkinter callback 
Traceback (most recent call last): 
    File "/usr/lib/python3.5/tkinter/__init__.py", line 1553, in __call__ 
    return self.func(*args) 
    File "/home/cali/PycharmProjects/Todo/Todo.py", line 233, in edit_item 
    self.subject_text = task.subject 
AttributeError: 'NoneType' object has no attribute 'subject' 

Hier ist meine Aufgabe Klasse:

class Task: 

    def __init__(self, subject, priority): 

     self.subject = subject 
     self.priority = priority 

... und hier ist die Funktion in Frage:

def edit_item(self): 

    if len(self.listbox.curselection()) > 0: 
     self.edit_button.config(state=DISABLED) 
     self.save_button.config(state=NORMAL) 
     self.create_add_dialog() 

     task = self.find_task(self.listbox.get(ACTIVE)) 
     self.subject_text = task.subject 
     self.priority_combobox = task.priority 

    else: 
     messagebox.showinfo('Notification', 'Make sure you have tasks selected!') 
     self.edit_button.config(state=DISABLED) 

def find_task(self, task): 

    for x in self.tasks: 
     if x.subject == task: 
      return x 

Wie kann ich überwinden Das Thema?

+0

Was enthält die 'Listbox'? – Dashadower

+0

Ich habe ein Bild gepostet? –

+1

Was ist das Format von 'self.tasks'? – Dashadower

Antwort

0

In find_task iterieren Sie über die Liste der Aufgaben, und wenn es eine Übereinstimmung gibt, geben Sie die Aufgabe zurück. Es gibt jedoch None zurück, wenn nicht. Sie sollten also überprüfen, ob die Aufgabe existiert, bevor Sie die Klassenvariablen erhalten:

task = self.find_task(self.listbox.get(ACTIVE)) 
if task: 
    self.subject_text = task.subject 
    self.priority_combobox = task.priority 
else: #no such task 
    #example 
    messagebox.showinfo("Notification","There is no such task named %s"%(self.listbox.get(ACTIVE))) 
+0

... aber wie ist es möglich, dass es keine solche Aufgabe gibt, wenn es sie gibt? Das ist meine Frage. –

+0

Können Sie mir die 'Task' Klasse zeigen? – Dashadower

+0

sehe meine bearbeitete Frage –

Verwandte Themen