2017-01-05 2 views
2

Ich bin relativ neu zu Tkinter. Ich habe versucht, eine Klasse für eine GUI zu erstellen, die ich erstelle, und ich bin auf einen Fehler gestoßen, den ich nicht beheben kann. Ich bin durch andere Foren gegangen und habe verschiedene Wege versucht, den Fehler zu korrigieren, hatte aber kein Glück. Code:Nicht unterstützte Operandentyp (en) für *: 'Instanz' und 'float'

root1 = Tk() 
root1.geometry("800x500") 
class simulation: 

    def __init__(self, root1): 
    radius_input = Label (root1 , text="Radius: ") 
    direction_input = Label (root1 , text="Direction (clockwise=1/\n anticlockwise=2): ") 
    radius_entry = Entry (root1) 
    direction_entry = Entry (root1) 

    #####other code used to display labels and entry boxes 

    self.radius = radius_entry 
    self.direction = direction_entry 

    self.pos_neg = 0 

    if self.direction == 1: 
     self.pos_neg = (-6.28) 
    elif self.direction == 2: 
     self.pos_neg = (6.28) 

def actual_sim(self): 
    r = self.radius #radius of the circle the ball moves 
    t = 1 
    omega = self.pos_neg/t # amount/angle the ball moves each second 


    #####other code not needed 
     xposition = (r * cosValue) 
     yposition = (r * sinValue) 

der Fehler i erhalten ist:

xposition = (r * cosValue) 
TypeError: unsupported operand type(s) for *: 'instance' and 'float' 

ich nicht verstehen, was das bedeutet, oder wie man es beheben. Irgendwelche Ideen jemand ??

Antwort

1

Die Fehlermeldung besagt, dass Sie versuchen, eine Instanz (dh ein Objekt basierend auf einer Klasse) mit einem Float zu multiplizieren. In diesem Fall multipliziert man ein Widget (nicht die Inhalte des Widgets), was keinen Sinn macht.

Sie müssen actual_sim ändern Sie den Wert zu holen und es in eine Zahl umwandeln, bevor Sie Berechnungen mit ihm durchführen können:

def actual_sim(self): 
    r = float(self.radius.get()) 
    ... 
+0

Vielen Dank für die schnelle Antwort. Ich gab einfach das, was Sie sagten, einen Versuch und bekam einen neuen Fehler, der es String in Float @ Bryan Oakley konvertieren konnte –

+0

@SamirHussain: vielleicht geben Sie etwas anderes als eine Zahl ein, oder vielleicht rufen Sie die Funktion, bevor Sie eine Chance hatten etwas eingeben. Es ist schwer zu sagen, da Ihr Beispiel unvollständig war und nicht zeigte, wie Sie 'actual_sim' aufrufen. –

+0

sortiert, danke Kumpel @Bryan Oakley –

Verwandte Themen