je cherche à afficher en direct la sortie d'une commande exécutee par
exemple par os.system ou os.popen dans un Pmw.ScrolledText ou un
quelconque autre widget. Il faut que la sortie de la commande soit
lisible par l'utilisateur de une GUI utilisant Tkinter au cours du calcul.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric Brunel
On Mon, 19 Dec 2005 18:10:20 +0100, twigster wrote:
Bonjour,
je cherche à afficher en direct la sortie d'une commande exécutee par exemple par os.system ou os.popen dans un Pmw.ScrolledText ou un quelconque autre widget.
os.popen et Pmw.ScrolledText seront très bien, oui.
Il faut que la sortie de la commande soit lisible par l'utilisateur de une GUI utilisant Tkinter au cours du calcul.
Oui, d'accord. Et sinon, c'est quoi la question? Qu'est-ce que tu as essayé de faire? Qu'est-ce qui ne marche pas? -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17;8(%,5.Z65'*9--56l7+-'])"
On Mon, 19 Dec 2005 18:10:20 +0100, twigster <twigsterREMOVE@THISmelix.net> wrote:
Bonjour,
je cherche à afficher en direct la sortie d'une commande exécutee par
exemple par os.system ou os.popen dans un Pmw.ScrolledText ou un
quelconque autre widget.
os.popen et Pmw.ScrolledText seront très bien, oui.
Il faut que la sortie de la commande soit
lisible par l'utilisateur de une GUI utilisant Tkinter au cours du calcul.
Oui, d'accord. Et sinon, c'est quoi la question? Qu'est-ce que tu as essayé de faire? Qu'est-ce qui ne marche pas?
--
python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17;8(%,5.Z65'*9--56l7+-'])"
On Mon, 19 Dec 2005 18:10:20 +0100, twigster wrote:
Bonjour,
je cherche à afficher en direct la sortie d'une commande exécutee par exemple par os.system ou os.popen dans un Pmw.ScrolledText ou un quelconque autre widget.
os.popen et Pmw.ScrolledText seront très bien, oui.
Il faut que la sortie de la commande soit lisible par l'utilisateur de une GUI utilisant Tkinter au cours du calcul.
Oui, d'accord. Et sinon, c'est quoi la question? Qu'est-ce que tu as essayé de faire? Qu'est-ce qui ne marche pas? -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17;8(%,5.Z65'*9--56l7+-'])"
twigster
os.popen me donne la sortie d'un programme à la fin de son execution or je voudrais avoir acces au degré d'avancement du calcul. Ceci est donné par ce qui s'affiche au fur et à mesure du calcul dans le stdout.
L'idée la plus bête que j'ai trouvé pour lancer et suivre un process depuis un GUI et d'afficher dans un Pmw.ScrolledText la sortie en temps réel mais si qq a une autre idée je suis preneur.
merci Alexandre
os.popen me donne la sortie d'un programme à la fin de son execution or
je voudrais avoir acces au degré d'avancement du calcul. Ceci est donné
par ce qui s'affiche au fur et à mesure du calcul dans le stdout.
L'idée la plus bête que j'ai trouvé pour lancer et suivre un process
depuis un GUI et d'afficher dans un Pmw.ScrolledText la sortie en temps
réel mais si qq a une autre idée je suis preneur.
os.popen me donne la sortie d'un programme à la fin de son execution or je voudrais avoir acces au degré d'avancement du calcul. Ceci est donné par ce qui s'affiche au fur et à mesure du calcul dans le stdout.
L'idée la plus bête que j'ai trouvé pour lancer et suivre un process depuis un GUI et d'afficher dans un Pmw.ScrolledText la sortie en temps réel mais si qq a une autre idée je suis preneur.
merci Alexandre
Eric Brunel
On Tue, 20 Dec 2005 11:34:25 +0100, twigster wrote:
os.popen me donne la sortie d'un programme à la fin de son execution
Euh..., non? os.popen te donne la sortie de la commande au fur et à mesure de son exécution, mais en général en mode bufferisé, ce qui va générer des "à-coups".
or je voudrais avoir acces au degré d'avancement du calcul. Ceci est donné par ce qui s'affiche au fur et à mesure du calcul dans le stdout.
Je pense que ton problème vient simplement du fait que tu ne mets pas à jour l'affichage suffisamment souvent (voire pas du tout). Appeler la méthode update_idletasks sur ton Pmw.ScrolledText ou sur n'importe quel widget Tkinter régulièrement (par exemple à chaque fois que tu lis une ligne dans le pipe) devrait résoudre ton problème.
L'idée la plus bête que j'ai trouvé pour lancer et suivre un process depuis un GUI et d'afficher dans un Pmw.ScrolledText la sortie en temps réel mais si qq a une autre idée je suis preneur.
Eh? Je ne comprends pas ce que tu veux dire. Pourrais-tu poster un bout de code, stp? Ca aiderait à comprendre ce que tu fais et pourquoi ça ne marche pas... -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17;8(%,5.Z65'*9--56l7+-'])"
On Tue, 20 Dec 2005 11:34:25 +0100, twigster <twigsterREMOVE@THISmelix.net> wrote:
os.popen me donne la sortie d'un programme à la fin de son execution
Euh..., non? os.popen te donne la sortie de la commande au fur et à mesure de son exécution, mais en général en mode bufferisé, ce qui va générer des "à-coups".
or
je voudrais avoir acces au degré d'avancement du calcul. Ceci est donné
par ce qui s'affiche au fur et à mesure du calcul dans le stdout.
Je pense que ton problème vient simplement du fait que tu ne mets pas à jour l'affichage suffisamment souvent (voire pas du tout). Appeler la méthode update_idletasks sur ton Pmw.ScrolledText ou sur n'importe quel widget Tkinter régulièrement (par exemple à chaque fois que tu lis une ligne dans le pipe) devrait résoudre ton problème.
L'idée la plus bête que j'ai trouvé pour lancer et suivre un process
depuis un GUI et d'afficher dans un Pmw.ScrolledText la sortie en temps
réel mais si qq a une autre idée je suis preneur.
Eh? Je ne comprends pas ce que tu veux dire. Pourrais-tu poster un bout de code, stp? Ca aiderait à comprendre ce que tu fais et pourquoi ça ne marche pas...
--
python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17;8(%,5.Z65'*9--56l7+-'])"
On Tue, 20 Dec 2005 11:34:25 +0100, twigster wrote:
os.popen me donne la sortie d'un programme à la fin de son execution
Euh..., non? os.popen te donne la sortie de la commande au fur et à mesure de son exécution, mais en général en mode bufferisé, ce qui va générer des "à-coups".
or je voudrais avoir acces au degré d'avancement du calcul. Ceci est donné par ce qui s'affiche au fur et à mesure du calcul dans le stdout.
Je pense que ton problème vient simplement du fait que tu ne mets pas à jour l'affichage suffisamment souvent (voire pas du tout). Appeler la méthode update_idletasks sur ton Pmw.ScrolledText ou sur n'importe quel widget Tkinter régulièrement (par exemple à chaque fois que tu lis une ligne dans le pipe) devrait résoudre ton problème.
L'idée la plus bête que j'ai trouvé pour lancer et suivre un process depuis un GUI et d'afficher dans un Pmw.ScrolledText la sortie en temps réel mais si qq a une autre idée je suis preneur.
Eh? Je ne comprends pas ce que tu veux dire. Pourrais-tu poster un bout de code, stp? Ca aiderait à comprendre ce que tu fais et pourquoi ça ne marche pas... -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17;8(%,5.Z65'*9--56l7+-'])"
twigster
ok disons que j'ai
command = 'moncode -i in -o out -param p' out = os.popen(command)
st = Pmw.ScrolledText(parent) st.pack()
ensuite je veux afficher out dans st
je sais faire à partir d'un fichier en ajoutant > file.txt à command mais ca se pas portable sous windows je pense. Ex: st.importfile('file.txt')
ou a partir d'un string st.appendtext('mon texte')
j'imagine que je peux faire st.appendtext(out.writelines)
éventuellement
line = out.writeline while not line: st.appendtext(line) line = out.writeline
[q] est-ce que c'est ce que vous suggérez? [q] si oui comment savoir quand le process est fini pour arreter de faire boucler le while?
merci Alexandre
ok disons que j'ai
command = 'moncode -i in -o out -param p'
out = os.popen(command)
st = Pmw.ScrolledText(parent)
st.pack()
ensuite je veux afficher out dans st
je sais faire à partir d'un fichier en ajoutant > file.txt à command
mais ca se pas portable sous windows je pense.
Ex:
st.importfile('file.txt')
ou a partir d'un string
st.appendtext('mon texte')
j'imagine que je peux faire
st.appendtext(out.writelines)
éventuellement
line = out.writeline
while not line:
st.appendtext(line)
line = out.writeline
[q] est-ce que c'est ce que vous suggérez?
[q] si oui comment savoir quand le process est fini pour arreter de
faire boucler le while?
command = 'moncode -i in -o out -param p' out = os.popen(command)
st = Pmw.ScrolledText(parent) st.pack()
ensuite je veux afficher out dans st
je sais faire à partir d'un fichier en ajoutant > file.txt à command mais ca se pas portable sous windows je pense. Ex: st.importfile('file.txt')
ou a partir d'un string st.appendtext('mon texte')
j'imagine que je peux faire st.appendtext(out.writelines)
éventuellement
line = out.writeline while not line: st.appendtext(line) line = out.writeline
[q] est-ce que c'est ce que vous suggérez? [q] si oui comment savoir quand le process est fini pour arreter de faire boucler le while?
merci Alexandre
Eric Brunel
On Tue, 20 Dec 2005 14:36:40 +0100, twigster wrote:
ok disons que j'ai
command = 'moncode -i in -o out -param p' out = os.popen(command)
st = Pmw.ScrolledText(parent) st.pack()
Jusqu'ici, tout va bien.
ensuite je veux afficher out dans st
je sais faire à partir d'un fichier en ajoutant > file.txt à command mais ca se pas portable sous windows je pense. Ex: st.importfile('file.txt')
ou a partir d'un string st.appendtext('mon texte')
(Pour les méthodes importfile et appendtext, je suppose que tu sais ce que tu fais: je ne les ai jamais utilisées et je ne savais même pas qu'elles existaient. J'en était resté à la bonne vieille méthode monTexte.insert('end', chaine))
j'imagine que je peux faire st.appendtext(out.writelines)
Ben non: - d'abord, out.writelines *écrit* les lignes et ne les lit pas - ensuite, pour appeler la méthode, il faut des parenthèses: out.writelines() ou out.readlines() - même avec les parenthèses et la bonne méthode, out.readlines() renvoie une *liste* de lignes, et pas une chaîne simple; donc tu ne paux pas la passer telle qu'elle à st.appendtext, qui - je suppose - attend une chaîne.
éventuellement
line = out.writeline while not line: st.appendtext(line) line = out.writeline
Moi, je dirais:
line = out.readline() while line: st.appendtext(line) st.update_idletasks() line = out.readline()
ou même plutôt:
for line in out: st.appendtext(line) st.update_idletasks()
[q] est-ce que c'est ce que vous suggérez? [q] si oui comment savoir quand le process est fini pour arreter de faire boucler le while?
Le dernier out.readline() renverra la chaîne vide lorsqu'il n'y a plus rien à lire, c'est à dire lorsque la commande lancée via le popen aura fermé sa sortie standard. On peut raisonnablement supposer que si elle fait ça, c'est qu'elle est terminée (de toutes façons, même si elle ne l'est pas, elle ne pourra plus rien afficher...).
merci
Pas de mal.
HTH -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17;8(%,5.Z65'*9--56l7+-'])"
On Tue, 20 Dec 2005 14:36:40 +0100, twigster <twigsterREMOVE@THISmelix.net> wrote:
ok disons que j'ai
command = 'moncode -i in -o out -param p'
out = os.popen(command)
st = Pmw.ScrolledText(parent)
st.pack()
Jusqu'ici, tout va bien.
ensuite je veux afficher out dans st
je sais faire à partir d'un fichier en ajoutant > file.txt à command
mais ca se pas portable sous windows je pense.
Ex:
st.importfile('file.txt')
ou a partir d'un string
st.appendtext('mon texte')
(Pour les méthodes importfile et appendtext, je suppose que tu sais ce que tu fais: je ne les ai jamais utilisées et je ne savais même pas qu'elles existaient. J'en était resté à la bonne vieille méthode monTexte.insert('end', chaine))
j'imagine que je peux faire
st.appendtext(out.writelines)
Ben non:
- d'abord, out.writelines *écrit* les lignes et ne les lit pas
- ensuite, pour appeler la méthode, il faut des parenthèses: out.writelines() ou out.readlines()
- même avec les parenthèses et la bonne méthode, out.readlines() renvoie une *liste* de lignes, et pas une chaîne simple; donc tu ne paux pas la passer telle qu'elle à st.appendtext, qui - je suppose - attend une chaîne.
éventuellement
line = out.writeline
while not line:
st.appendtext(line)
line = out.writeline
Moi, je dirais:
line = out.readline()
while line:
st.appendtext(line)
st.update_idletasks()
line = out.readline()
ou même plutôt:
for line in out:
st.appendtext(line)
st.update_idletasks()
[q] est-ce que c'est ce que vous suggérez?
[q] si oui comment savoir quand le process est fini pour arreter de
faire boucler le while?
Le dernier out.readline() renverra la chaîne vide lorsqu'il n'y a plus rien à lire, c'est à dire lorsque la commande lancée via le popen aura fermé sa sortie standard. On peut raisonnablement supposer que si elle fait ça, c'est qu'elle est terminée (de toutes façons, même si elle ne l'est pas, elle ne pourra plus rien afficher...).
merci
Pas de mal.
HTH
--
python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17;8(%,5.Z65'*9--56l7+-'])"
On Tue, 20 Dec 2005 14:36:40 +0100, twigster wrote:
ok disons que j'ai
command = 'moncode -i in -o out -param p' out = os.popen(command)
st = Pmw.ScrolledText(parent) st.pack()
Jusqu'ici, tout va bien.
ensuite je veux afficher out dans st
je sais faire à partir d'un fichier en ajoutant > file.txt à command mais ca se pas portable sous windows je pense. Ex: st.importfile('file.txt')
ou a partir d'un string st.appendtext('mon texte')
(Pour les méthodes importfile et appendtext, je suppose que tu sais ce que tu fais: je ne les ai jamais utilisées et je ne savais même pas qu'elles existaient. J'en était resté à la bonne vieille méthode monTexte.insert('end', chaine))
j'imagine que je peux faire st.appendtext(out.writelines)
Ben non: - d'abord, out.writelines *écrit* les lignes et ne les lit pas - ensuite, pour appeler la méthode, il faut des parenthèses: out.writelines() ou out.readlines() - même avec les parenthèses et la bonne méthode, out.readlines() renvoie une *liste* de lignes, et pas une chaîne simple; donc tu ne paux pas la passer telle qu'elle à st.appendtext, qui - je suppose - attend une chaîne.
éventuellement
line = out.writeline while not line: st.appendtext(line) line = out.writeline
Moi, je dirais:
line = out.readline() while line: st.appendtext(line) st.update_idletasks() line = out.readline()
ou même plutôt:
for line in out: st.appendtext(line) st.update_idletasks()
[q] est-ce que c'est ce que vous suggérez? [q] si oui comment savoir quand le process est fini pour arreter de faire boucler le while?
Le dernier out.readline() renverra la chaîne vide lorsqu'il n'y a plus rien à lire, c'est à dire lorsque la commande lancée via le popen aura fermé sa sortie standard. On peut raisonnablement supposer que si elle fait ça, c'est qu'elle est terminée (de toutes façons, même si elle ne l'est pas, elle ne pourra plus rien afficher...).
merci
Pas de mal.
HTH -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17;8(%,5.Z65'*9--56l7+-'])"
Do Re Mi chel La Si Do
Bonsoir !
Juste un détail :
ajoutant > file.txt à command mais ça se pas portable sous windows je pense
Ben si. Windows accepte très bien la redirection ; ">" et ">>" (la seconde forme ajoutant au fichier, au lieu de récréer le fichier).
@-salutations
Michel Claveau
Bonsoir !
Juste un détail :
ajoutant > file.txt à command mais ça se pas portable sous windows je
pense
Ben si. Windows accepte très bien la redirection ; ">" et ">>" (la seconde
forme ajoutant au fichier, au lieu de récréer le fichier).
ajoutant > file.txt à command mais ça se pas portable sous windows je pense
Ben si. Windows accepte très bien la redirection ; ">" et ">>" (la seconde forme ajoutant au fichier, au lieu de récréer le fichier).
@-salutations
Michel Claveau
R12y
merci Pas de mal.
Tes ligens sont trop longues.
-- Telephone portable "intelligent" (SmartPhone) GSM, GPRS,... Il est sous Linux, ne coute pas trop cher,... http://www.it2l.com/product_info.php?cPath&products_idE6
merci
Pas de mal.
Tes ligens sont trop longues.
--
Telephone portable "intelligent" (SmartPhone) GSM, GPRS,...
Il est sous Linux, ne coute pas trop cher,...
http://www.it2l.com/product_info.php?cPath&products_idE6
-- Telephone portable "intelligent" (SmartPhone) GSM, GPRS,... Il est sous Linux, ne coute pas trop cher,... http://www.it2l.com/product_info.php?cPath&products_idE6