Bonjour,
j'espère que je poste dans la bonne section et que le titre du sujet est explicite (sinon, je peux le modifier).
Maintenant, je m'explique :
Dans le cadre d'un projet, je dois développer une interface graphique qui fera le lien entre l'utilisateur et Scilab.
Grosso modo, l'utilisateur va rentrer des informations (Fonctions de Transfert, Matrice, Pôles), et choisir ce qu'il désire afficher (Réponse temporelle, Diagramme de Bode...).
J'arrive à récupérer les info entrées par l'utilisateur dans un "fichier.txt". Il faut ensuite que ce "fichier.txt" soit "exécuté" (pour reprendre les termes de scilab) par le programme Scilab, afin de lancer le calcul et m'afficher une courbe.
Jusqu'à présent :
Le fichier.txt que j'obtiens est correctement écrit pour être lu par scilab et obtenir le résultat voulu (en lançant Scilab, et en exécutant le fichier).
Depuis mon script Python, j'arrive à associer à un bouton le lancement de Scilab (et ça marche).
Maintenant, ce qui m'intéresse c'est d'associer à mon bouton mon fichier et le programme.
le code associé au bouton :
J'ai cherché et trouvé ceci pour résoudre mon problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #Validation fonction de transfert et calcul Bode def repFCTbode(): affichgain['text'] = egain.get() #Recuperation gain affichnum['text'] = enum.get() #Recuperation numerateur affichden['text'] = eden.get() #Recuperation denominateur fichier = open("fichier_fonction.txt", "w") # Ouvre le fichier. text="p=poly(0,'p')\nh=syslin('c',("+str(egain.get())+")*("+str(enum.get())+")/("+str(eden.get())+"))\nbode(h)" #ecriture de la fonction dans le fichier fichier.write(text) # Ecris la reponse tapee. fichier.close() monfichier = "/Users/pierrearnoux/Desktop/Programme_Python/fichier_fonction.txt" monprogramme = "/Applications/scilab-5.4.0-alpha-1.app/Contents/MacOS/bin/scilab" subprocess.Popen([monprogramme, monfichier])
http://www.blog.pythonlibrary.org/20...le-or-program/
Problème : on me dit que les fichiers ou repertoires n'existent pas.
Après recherche je suis tombé sur ce sujet : http://www.developpez.net/forums/d12...bprocess-popen
J'ai beau chercher à modifier de manière similaire, cela ne semble pas fonctionner (je suis sous Mac OS X aussi). Alors je sais pas si je fais faux pas quant à la méthode à utiliser, ou dans la syntaxe (je dois avouer ne pas trop capter ce que fait le -c ici).
Ce que je cherche à obtenir, c'est qu'en cliquant sur mon bouton, scilab se lance et execute le code qui est créé juste avant, et ainsi m'affiche mon diagramme de Bode. (Bon, pour que ce soit plus simple, j'ai copié mon fichier dans le répertoire de Scilab, mais originellement, il se situe dans le même répertoire que mon script Python).
Par ailleurs, j'ai une question générale à propos de Python. Mon script doit être fonctionnel sur Windows, Linux et Mac OS. Je viens de changer d'ordi (Win XP -> Mac Os) et quand j'ai maintenant un soucis avec les zones d'entrées.
Dans mon interface graphique, j'ai des zones où j'entre des valeurs :
problème, certains caractères font planter le programme : par exemple ^
En gros, si je veux taper 1+4*p+5*p^2, ça plante au niveau du ^
(mais je comprends pas, si je copie depuis un éditeur de texte ^ et le colle dans ma zone d'entrée, ça ne plante pas là...)
Voilà, merci d'avoir lu.
J'espère que ça ne va pas faire doublon avec un autre sujet (j'ai cherché, et n'ai rien trouvé de concluant jusqu'à présent).
J'espère aussi avoir été assez clair quand à mon problème !
Merci d'avance !
Edit :
Pour plus de clarté, quelques captures d'écrans (cliquer ouvre l'image) :
Lorsque j'exécute mon script Python, mon interface graphique se lance, et je rentre les valeurs dans les champs correspondants :
Le fichier .txt n'est pas créé. Je clique alors sur mon bouton Diagramme de Bode (le seul ayant une commande active pour l'instant pour lancer scilab et le tracé)
Mon fichier est bien créé et pourtant Scilab ne se lance pas et n'exécute pas ce fichier.
Pourtant le fichier est bien fonctionnel.
Quand je lance Scilab, et "exécute" le fichier :
J'obtiens bien mon tracé (mais ça m'arrangerait pas mal de faire en sorte que ce lancement et exécution du script soit géré par mon programme Python) :
![]()
Partager