Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1513 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Python utilisation variable globale

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Python utilisation variable globale

n°2167113
darhkan
Posté le 06-12-2012 à 15:31:32  profilanswer
 

Bonjour a tous,
 
je suis actuellement en train de realiser un tp pour mon ecole et je veux utiliser des variables globales car je reutilise les meme variables tout le long de mon programme.
Malheureusement j'ai une erreur que je n'arrive pas a résoudre sur un bout de mon code.
 
import time
import sys
import maya.cmds as cmds
 
global nbLignes
global nbColonnes
global profondeur
global retour
       
def interface():
       window=cmds.window()
       cmds.columnLayout()
       cmds.text( label='Nombre de lignes' )
       textFld1=cmds.textField('tFld1')
       cmds.text( label='Nombre de colonnes' )
       textFld2=cmds.textField('tFld2')
       cmds.text( label='Profondeur' )
       textFld3=cmds.textField('tFld3')
       but=cmds.button(l='add', c="res=valider()" )
       show=cmds.showWindow()
 
 
def valider(*args):
       global retour
       print(retour)
       nbLignes = cmds.textField('tFld1', query=True, text=True)
       nbColonnes = cmds.textField('tFld2', query=True, text=True)
       profondeur = cmds.textField('tFld3', query=True, text=True)
 
je test la variable global retour dans la fonction valider().
Mais j'obtiens toujours la meme erreur:
# Error: NameError: file <maya console> line 31: global name 'retour' is not defined #
 
J'aimerais detecter quand la fonction valider se termine pour pouvoir utiliser les variables NbLignes, NbColonne et profondeur qui comporte des valeurs que j'ai saisis.
Si cela n'est pas possible est ce que quelqu'un pourrait m'expliquer comment je pourrais attendre que la fonction valider ai été éxécuter pour passer la suite de mon code.
 
Merci d'avance

mood
Publicité
Posté le 06-12-2012 à 15:31:32  profilanswer
 

n°2167116
masklinn
í dag viðrar vel til loftárása
Posté le 06-12-2012 à 15:44:58  profilanswer
 

darhkan a écrit :

Bonjour a tous,
 
je suis actuellement en train de realiser un tp pour mon ecole et je veux utiliser des variables globales


C'est mal.

darhkan a écrit :

car je reutilise les meme variables tout le long de mon programme.


C'est pas vraiment une raison.

darhkan a écrit :

Code :
  1. global nbLignes
  2. global nbColonnes
  3. global profondeur
  4. global retour



Ce bordel là n'est pas correct, une variable globale ne se déclare pas spécialement. global est à utiliser dans une fonction voulant assigner à une variable globale, pour éviter qu'elle ne crée la même variable localement.

darhkan a écrit :

je test la variable global retour dans la fonction valider().
Mais j'obtiens toujours la meme erreur:
# Error: NameError: file <maya console> line 31: global name 'retour' is not defined #


Bah c'est normal, elle n'est jamais définie.

darhkan a écrit :

J'aimerais detecter quand la fonction valider se termine pour pouvoir utiliser les variables NbLignes, NbColonne et profondeur qui comporte des valeurs que j'ai saisis.
Si cela n'est pas possible est ce que quelqu'un pourrait m'expliquer comment je pourrais attendre que la fonction valider ai été éxécuter pour passer la suite de mon code.


Habituellement on utilise des concepts genre signaux ou évènements pour des notifications asynchrones dans ce genre. Après je connais pas du tout maya, donc j'en sais pas plus. Et de ce que je puisse en voire, je suis pas persuadé que ce soit le principe de fonctionnement des UIs MEL.
 
Pourquoi ne pas lancer "la suite de ton code" depuis valider, un truc du style?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2167117
darhkan
Posté le 06-12-2012 à 15:49:19  profilanswer
 

Je vais tester de tout lancer depuis la fonction valider.
J'ai la tete dedans toute la journée je ne vois plus les solutions les plus simple.
Je vais essayer sans les variables globales.
Merci pour ta réponse

n°2167129
darhkan
Posté le 06-12-2012 à 17:39:23  profilanswer
 

J'ai un autre soucis qui se présente.
Et j'avoue que j'arrive vraiment pas a comprendre comment fonctionne Maya.
J'ai reussi a lancer mon code, il s'est executé parfaitement 4-5 fois et la comme par magie ca ne marche plus alors que j'ai rien touché.
J'obtiens :
# Error: NameError: file <maya console> line 29: global name 'window' is not defined #  
 
La partie de code concernée:
def interface():
 window=cmds.window()
 cmds.columnLayout()
 cmds.text( label='Nombre de lignes' )
 textFld1=cmds.textField('tFld1')
 cmds.text( label='Nombre de colonnes' )
 textFld2=cmds.textField('tFld2')
 cmds.text( label='Profondeur' )
 textFld3=cmds.textField('tFld3')
 but=cmds.button(l='add', c=valider)
 show=cmds.showWindow(window)
 
 
def valider(*args):
 nbLignes = int(cmds.textField('tFld1', query=True, text=True))
 nbColonnes = int(cmds.textField('tFld2', query=True, text=True))
 profondeur = int(cmds.textField('tFld3', query=True, text=True))
L.29  cmds.deleteUI(window)
 traitement=0
 if(nbLignes!=0 and nbColonnes!=0 and profondeur==0):  
  creerGrilleMaya(nbLignes,nbColonnes)
  while traitement<10:

n°2167130
darhkan
Posté le 06-12-2012 à 17:40:39  profilanswer
 

En gros il ne connait plus le "window" dans ma commande:
cmds.deleteUI(window) , alors que j'utilise (*args) comme paramètre de la fonction.
J'aurais bien besoin d'une explication

n°2167137
masklinn
í dag viðrar vel til loftárása
Posté le 06-12-2012 à 19:41:50  profilanswer
 

darhkan a écrit :

En gros il ne connait plus le "window" dans ma commande:
cmds.deleteUI(window) , alors que j'utilise (*args) comme paramètre de la fonction.
J'aurais bien besoin d'une explication


Je vois pas le rapport. window c'est window, args c'est args. ici, window est une variable locale à la fonction interface, elle n'est pas visible dans la fonction valider, pour autant que je le sache.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Python utilisation variable globale

 

Sujets relatifs
Utilisation .formula "=" & variableDébutant en Python
Variable %netlogon%LSystem en Python
récupération d'une variable a l'écriture d'un inputUtilisation d'une variable dans un appel de SQL (avec un "@" )
Utilisation de la bibliothèque portmidi sur Windows avec AdaBASH : manipulation de variable
Plus de sujets relatifs à : Python utilisation variable globale


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR