2017-09-11 1 views
2

Ich bin QT5 eine App zu entwerfen und hier ist die Sequenzen der Funktion, die ich verwende.nicht unterstützte Operandentyp (en) für *: 'NoneType' und 'int' in Python 3

self.u = 0 
self.u = self.listWidget_3.itemClicked.connect(self.ClickRW1) 

self.pushButton_2.clicked.connect(self.push4) 

Im Anschluss an die ClickRW1 Funktion

def ClickRW1(self, item): 
    self.y = item.text() 
    if self.y is "June": 
     return 0 
    elif self.y is "July": 
     return 1 
    elif self.y is "August": 
     return 2 
    else: 
     return 3 

Wenn die pushButton_2 angeklickt wird, wird diese Funktion

def push4(self): 
    plot_rain(self.z, self.u) 

Die Handlung regen Funktionen genannt -

def plot_rain(year, mont): 
    if year>2013: 
     year = year-1 
    n = year-2000 
    xc = np.zeros(4) 
    for i in range(0,4): 
     xc[i] = i 
    plt.plot(xc, predicted[((n*16)+(mont*4)):((n*16) + 4 + (mont*4))]) 
    plt.show() 

Als ich klicke auf den pushBu tton_2. Im Folgenden ist der fehler-

plt.plot(xc, predicted[((n*16)+(mont*4)):((n*16) + 4 + (mont*4))]) 

TypeError: unsupported operand type(s) for *: 'NoneType' and 'int' 
+0

In Zukunft bitte ** Vollzurückverfolgungs enthalten ** der Fehler, nicht nur die letzten beiden Linien. Das würde es den Leuten viel einfacher machen, dir zu helfen, da dies zeigt, wie Python über welchen Pfad zu dem Fehler gekommen ist. –

Antwort

2

self.u ist None; Sie setzen ihn auf None hier:

self.u = self.listWidget_3.itemClicked.connect(self.ClickRW1) 

Der connect() Aufruf zurück None.

Sie passieren dann self.u-plot_rain() hier:

def push4(self): 
    plot_rain(self.z, self.u) 

, die diesen Wert als mont verwendet, so mont*4 ausfällt.

Die Lösung ist nicht das .connect() Ergebnis etwas zu vergeben, ist es nicht zuweisen müssen:

self.u = 0 
self.listWidget_3.itemClicked.connect(self.ClickRW1) 
Verwandte Themen