2017-09-16 6 views
0

J'ai construit une application, la source commence comme ceci:NameError: nom 'tk' est pas définie dans la classe d'objet

from tkinter import Text 
from tkinter import Label  

from AESEncDec import * 
from MD5Hashing import * 
from RSAEncDec import * 

color = 'lightblue' #color our background 

class Application(Frame): 

    def __init__(self, root=None): 

     Frame.__init__(self, root) 
     self.frame_width = 700 
     self.frame_height = 400 

Mais dernier morceau de celui-ci ne peut pas exécuter:

#create object TK class 
the_window = Tk(className = " Cryptographic") 
#create object Application 
app = Application(the_window) 
#run our Application 
app.mainloop() 

Et il donne l'erreur NameError:

Traceback (most recent call last): File "/home/artur/Documents/MScProject/MSc Project/Task #179276/main_program.py", line 169, in the_window = Tk(className = " Cryptographic") NameError: name 'Tk' is not defined

Comment dois-je le définir correctement dans ce cas?

+0

Avez-vous besoin d'importer Tk? – AK47

+0

Vous réalisez que c'est exactement le même problème que votre [question précédente] (https://stackoverflow.com/questions/46252200/nameerror-name-frame-is-not-defined-python) juste avec un nom différent oublié d'importer? –

Répondre

1

Vous manquez une instruction import: from tkinter import Tk

La meilleure façon d'éviter les conflits, est d'importer le module entier, éventuellement avec un alias pour faire court (mais ne pas oublier d'ajouter tk. partout où vous avez appelé un widget tkinter):

import tkinter as tk 

from AESEncDec import * 
from MD5Hashing import * 
from RSAEncDec import * 

color = 'lightblue' #color our background 

class Application(tk.Frame): 

    def __init__(self, root=None): 

     tk.Frame.__init__(self, root) 
     self.frame_width = 700 
     self.frame_height = 400 


#create object TK class 
the_window = tk.Tk(className = " Cryptographic") 
#create object Application 
app = Application(the_window) 
#run our Application 
app.mainloop() 
+0

Il donne une nouvelle faute de frappe d'erreur: retraçage (le plus récent appel dernier): fichier "/ home/artur/Documents/MScProject/MSc Projet/Tâche # 179276/main_program.py", ligne 170, dans the_window = Tk (className = "Cryptographic") TypeError: l'objet 'module' n'est pas appelable Qu'est-ce qui ne va pas? –

+0

notez les minuscules utilisées dans 'import tkinter as tk' et vous avez besoin de' tk.Tk (className = "Cryptographic") '. 'Tk' est la classe principale,' tk' est le module, désolé pour l'alias confus, il est assez commun – PRMoureu

+0

Eh bien j'ai changé le début pour importer tkinter comme Tk et la dernière pièce à: #create object TK class the_window = tk.Tk (className = "Cryptographic") objet #create application app = application (the_window) #run notre application app.mainloop() je reçois toujours la même erreur :( –