2017-10-05 9 views
-2

J'essaie de faire une calculatrice de formules pour un projet d'école. J'essaie d'utiliser la méthode .get tkinter pour obtenir ce qui est dans une entrée. Il envoie toujours une erreur. Je ne veux pas l'écrire dans une classe cependant.La méthode tkinter .get ne fonctionne pas correctement

Ce n'est pas le code final.

from tkinter import * 

def speedCalc(): 
    _distance = spDistance.get() 
    _time = spTime.get() 

spDistance = Entry(speed).grid(row=1, column=1) 
spTime = Entry(speed).grid(row=2, column=1) 
spSpeed = Entry(speed).grid(row=3, column=1) 

spConvert = Button(speed, text="Calculate", command=speedCalc) 
spConvert.grid(row=4, column=1) 

Lorsque j'exécute le code, il est dit ceci sur la console:

Exception in Tkinter callback 
Traceback (most recent call last): 
    File"C:\Users\JackP\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1699, in __call__ 
return self.func(*args) 
    File "C:/Users/JackP/Desktop/Python Projets/Formula App/4. Extention.py", line 25, in speedCalc 
_distance = spDistance.get() 
AttributeError: 'NoneType' object has no attribute 'get' 
+1

Cette question a été posée de nombreuses fois. Please google [AttributeError: l'objet 'NoneType' n'a pas d'attribut 'get'] (https://www.google.com/search?source=hp&q=AttributeError%3A+%27NoneType%27+object+has+no+attribute+% 27get% 27 & oq = AttributeError% 3A +% 27NonType% 27 + objet + a + non + attribut +% 27get% 27 & gs_l = psy-ab.3 ... 325.325.0.634.1.1.0.0.0.0.0.0..0.0 .... 0 ... 1.1.64.psy-ab..1.0.0 .... 0.h1eEyi4YuD0) et vous auriez votre réponse. –

+0

Merci. J'ai cherché autour de la mauvaise chose. – JackHumphries

Répondre

1

Vous ne pouvez pas utiliser une mise en page comme grid ou pack sur la même ligne que l'initialisation. Vous devez mettre les sur des lignes distinctes:

spDistance = Entry(speed) 
spDistance.grid(row=1, column=1) 
+0

Merci. J'ai regardé autour pour cela pendant des lustres parce que j'ai créé un éditeur de texte. Je pense que j'ai fait la même erreur. – JackHumphries

1

Lorsque vous attribuez un widget à une variable, n'appelez pas une méthode de gestion de la mise en page sur le widget directement sur la même ligne; fais-le sur une autre ligne.
La raison est que thinter gestionnaires de mise en page pack, grid et place retour None

from tkinter import * 

def speedCalc(): 
    _distance = spDistance.get() 
    _time = spTime.get() 

spDistance = Entry(speed) 
spDistance.grid(row=1, column=1) 
spTime = Entry(speed) 
spTime.grid(row=2, column=1) 
spSpeed = Entry(speed) 
spSpeed.grid(row=3, column=1) 

spConvert = Button(speed, text="Calculate", command=speedCalc) 
spConvert.grid(row=4, column=1) 
+0

Merci. Je n'ai pas cherché l'erreur, j'ai juste cherché "tkinter .get ne fonctionne pas.". – JackHumphries