2011-03-25 2 views
0

Je souhaite porter l'utilisateur variable une fois qu'une personne est connectée, vers un autre fichier qui va peupler ou reporter cette variable utilisateur afin que je puisse l'utiliser dans une instruction SQL.Transporter une variable sur deux fichiers dans des classes différentes

def ViewScore(self, event): 
    root = Tk() 
    root.title("You last 5 attempts for this topic") 
    user = user_management.getuser() 
    app = UserScore(root) 
    root.mainloop() 

Les travaux utilisateur variables, ive testé à l'aide des statments d'impression, mais je dois le porter vers le fichier UserScore.py et exécuter une instruction SQL.

sql = 'SELECT * FROM scores where username="%s" and topic="binary" order by ID DESC' % (user) 

La variable utilisateur il dans l'instruction SQL semble ne jamais se peuplé ou créé, je ne ne sais pas comment le faire.

UserScore.py

class UserScore(Frame): 

    def __init__(self,master): 
    Frame.__init__(self,master) 
    self.pack() 
    self.getRecords() 


    def getRecords(self): 

Répondre

0

Je devine que la fonction qui définit sql est une sorte de rappel GUI, pas quelque chose que vous appellerez directement avec des arguments. Avez-vous essayé d'appeler une fonction dans UserScore.py qui définit une variable globale, puis ayant la fonction qui définit sql accéder à cette variable globale?

Probablement pas le moyen le plus Python de le faire - devrait probablement le faire avec une instance de classe - mais il devrait fonctionner et c'est simple.

Edit: Pour clarifier:

Dans la fonction qui peut accéder à l'utilisateur, ajoutez ceci:

import UserScore 
UserScore.user = user 

En UserScore.py, mettez ce près du sommet:

user = None 

Puis, dans la Fonction UserScore.UserScore, il suffit d'accéder à la variable user.

(probablement pas une bonne idée de donner le module et la classe du même nom avec la même capitalisation, peut être déroutante.)

+0

Eh bien, le UserScore.py est configuré comme soi- 'UserScore de classe (Frame): def __init __ (self, maître): Cadre .__ init __ (self, maître) self.pack() self.getRecords() de GetRecords def (auto): ' on accédera à la variable globale dans ce code aussi? Ai-je besoin de le déclarer dans la méthode init? – viperfx

+0

Merci pour vos conseils! J'ai résolu le problème en utilisant votre solution suggérée. – viperfx

+0

Bon, rappelez-vous juste que ce n'est pas Pythonic, ou le meilleur moyen. Juste un moyen simple. –

Questions connexes