2017-10-07 7 views
0

Annahme Ich versuche, meine Fortschrittsbalken int Werte von jeder Schleife zu füttern aber ich erhalte eine Fehlermeldung erhalten, die besagt, dass ich nicht int Werte bin Eingabe:Python: Fortschrittsbalken nicht int

TypeError: 'int' object does not support item assignment 

Was ich sind tut, ist:

  1. Abrufen der Gesamtlänge des Arrays
  2. Dividing Länge des Fortschrittsbalkens mit Arraylänge
  3. Jede Schleife des (value/Prozentsatz für jedes Element in dem Array zu erhalten) Wert bekam von Schritt zwei in (int) gegossen wird und zu Gesamtwert var
  4. Casting (int) auf dem Gesamtwert var und es meinen Fortschrittsbalken

Bits und Stücke des Codes der Zuordnung zur Zeit aussehen dies wie:

(in main loop) 
.... 
self.progress = Progressbar(self, orient=HORIZONTAL,length=100, mode='determinate') 
global that 
that = self 
def progress_bar(self, progress): 
    progress["value"]=int(progress) 
.... 
(in another worker thread) 
.... 
item_count = 0 
item_percent = 100/len(my_arr) 
for x in my_arr: 
    item_count += 1 
    pb_percent = item_count * item_percent 
    pb_formatted = int(pb_formatted) 
    Application.progress_bar(that, int(pb_formatted)) 

Alles scheint mir richtig zu sein, dennoch halte ich diesen Fehler. Wenn ich die pb_formatted var drucke, kann ich sehen, dass es das ist, was ich für die Fortschrittsleiste benötige, und ich habe auch einige if-else Code-Blöcke laufen lassen, um zu überprüfen, ob das, was ich versuche, tatsächlich int ist.

Was könnte das Problem sein?

+0

Welche Zeile wirft Fehler? – amrit

Antwort

1

Hier ist Ihr Problem:

def progress_bar(self, progress): 
    progress["value"]=int(progress) 

progress hier ist das Argument Sie bestanden haben, sagen 42. 42["value"] = int(42) nichts zu bedeuten hat. Wie würdest du dem 42. Wertwert 42 zuweisen? Mit anderen Worten, Sie können progress["value"] nicht zuordnen, da progress kein Container ist.

Sie wollen wahrscheinlich self.progress auf der linken Seite dieser = Zeichen. ist Ihre Progressbar Instanz.

+0

Danke, nachdem ich dies gelesen habe, habe ich gemerkt, dass ich das 'self.progress' Objekt nicht in der Funktion aufgerufen habe, auf die ich den Fortschrittsbalken gesetzt habe, ich habe es jetzt funktioniert. – lowxkey

Verwandte Themen