Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/02/2010, à 20:30

AnsuzPeorth

[python.débutant][résolu] Lancer application en arrière plan.

Bjr,
Ca y est, je m'y suis mis ...Non sans mal (qui a dit que python était facile ? Si je l'attrape celui là !)

Donc pour résumer, j'aimerais lancer une app (vlc) depuis l'interface TKinter.
L'appuie d'un bouton appelle une fonction qui lance vlc, mais vlc reste en premier plan, TKinter est inaccessible.

Comment lancer également vlc depuis le scipt python en arrière plan.

En bash un simple & aurait fait l'affaire, mais en python ???

Ca fait un moment que je cherche ... J'ai essayé avec les thread, mais je suis arrivé à rien .

Merci d'avance.

PS: Qd on ne connait que bash, la POO et python, ben c'est vraiment tordu ...

Dernière modification par AnsuzPeorth (Le 26/02/2010, à 13:56)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#2 Le 24/02/2010, à 20:42

Jean-Julien

Re : [python.débutant][résolu] Lancer application en arrière plan.

Je suis incapable de répondre à ta question, je ne travaille que dans le terminal.
Mais si je peux te donner un conseil, c'est de commencer Python par le début.
Te lancer direct dans dans Tkinter c'est trop rapide.
Mais cet avis n'engage que moi.

Hors ligne

#3 Le 24/02/2010, à 21:48

HymnToLife

Re : [python.débutant][résolu] Lancer application en arrière plan.

Peut-être qu'il a déjà dépassé le "début". wink

@AnsuzPeorth: il faut en effet utiliser les threads, ça fait un moment que j'ai plus utilisé le module standard de threading de Python, donc je peux pas trop t'aider, il faudrait que je revoie ça. Si ça t'intéresse, par contre, j'ai ça en PyQt sur un truc que j'ai développé il y a quelques années (une interface graphique pour l'encodeur AAC de Nero, utilisant des threads pour que l'interface soit pas figée pendant que ça encode).


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#4 Le 24/02/2010, à 21:53

HP

Re : [python.débutant][résolu] Lancer application en arrière plan.

HymnToLife a écrit :

@AnsuzPeorth: il faut en effet utiliser les threads, […]

Il peut aussi utiliser un subprocess dont il n'attendra pas la fin (voir subprocess dans le doc, et wait()). Le threading, c'est à mon sens, un poil au dessus… et si ce n'est que pour remplacer un & de bash, un subprocess.Popen() peut largement suffire wink ; d'autant que c'est pour lancer une application (ligne de commande).

Jean-Julien a écrit :

Je suis incapable de répondre à ta question, je ne travaille que dans le terminal.

Je viens de "finir" un script utilisant jusqu'à 4 threads (threading)… alors, bon, on peut aussi utiliser des threads pour des "applications console"…

Dernière modification par HP (Le 24/02/2010, à 21:58)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#5 Le 24/02/2010, à 22:52

HymnToLife

Re : [python.débutant][résolu] Lancer application en arrière plan.

HP a écrit :
HymnToLife a écrit :

@AnsuzPeorth: il faut en effet utiliser les threads, […]

Il peut aussi utiliser un subprocess dont il n'attendra pas la fin (voir subprocess dans le doc, et wait()). Le threading, c'est à mon sens, un poil au dessus… et si ce n'est que pour remplacer un & de bash, un subprocess.Popen() peut largement suffire wink ; d'autant que c'est pour lancer une application (ligne de commande).

En effet. J'avais codé ça avant l'apparition du module subprocess, et je me souviens qu'avec les anciens os.popen*, c'était un peu plus crade (en plus, le fait de faire un thread me permettait d'envoyer un signal au reste de l'appli quand l'encodage était terminé, mais je m'égare...).

Dernière modification par HymnToLife (Le 24/02/2010, à 22:54)


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#6 Le 25/02/2010, à 01:44

AnsuzPeorth

Re : [python.débutant][résolu] Lancer application en arrière plan.

Jean-Julien a écrit :

Je suis incapable de répondre à ta question, je ne travaille que dans le terminal.
Mais si je peux te donner un conseil, c'est de commencer Python par le début.
Te lancer direct dans dans Tkinter c'est trop rapide.
Mais cet avis n'engage que moi.

Je suis d'accord avec toi, mais après avoir passé pas mal de temps sur les docs, cours et exercices, j'essaie de mettre en application ce que j'ai assimilé.
Comme lorsque j'ai appris le bash, je commence par un petit script très simple qui s'étoffera à mesure de mon apprentissage. La gestion des signaux interface/programme fait partie des trucs que je trouve important à apprendre.

Sur ce coup, je suis bloqué d'entrée sur un problème basique.

HymnToLife a écrit :

Peut-être qu'il a déjà dépassé le "début".

Pas vraiment ...;)

HymnToLife a écrit :

j'ai ça en PyQt sur un truc que j'ai développé il y a quelques années

Si c'est pas trop compliqué, ça m'intéresserais, j'ai rien trouvé de concret à ce sujet et j'ai toujours pas réussi à lancer une application avec thread ou threading ....!

HP a écrit :

un subprocess.Popen() peut largement suffire

smile Impeccable !

Par contre, je n'arrive pas à arrêter le process.

inst_vlc =subprocess.Popen(['vlc'])
time.sleep(10)
subprocess.Popen.kill(inst_vlc)
subprocess.Popen.kill()
AttributeError: type object 'Popen' has no attribute 'kill'

Y a un truc que j'ai pas du piger ...(subprocess.Popen.wait() fonctionne...)

Dernière modification par AnsuzPeorth (Le 25/02/2010, à 01:45)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#7 Le 25/02/2010, à 02:53

AnsuzPeorth

Re : [python.débutant][résolu] Lancer application en arrière plan.

J'arrive à tuer vlc avec:

commands.getstatusoutput('pkill vlc')

N'est-il pas possible de faire ça qu'avec python, sans passer par une commande externe ?
J'ai lu qqles part (impossible de remettre la main dessus), qu'on peut récuperer le pid d'une appli avec python ...

Thx.

Dernière modification par AnsuzPeorth (Le 25/02/2010, à 02:54)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#8 Le 25/02/2010, à 13:29

HymnToLife

Re : [python.débutant][résolu] Lancer application en arrière plan.

AnsuzPeorth a écrit :

Par contre, je n'arrive pas à arrêter le process.

inst_vlc =subprocess.Popen(['vlc'])
time.sleep(10)
subprocess.Popen.kill(inst_vlc)
subprocess.Popen.kill()
AttributeError: type object 'Popen' has no attribute 'kill'

Y a un truc que j'ai pas du piger ...(subprocess.Popen.wait() fonctionne...)

inst_vlc.kill()

wink


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#9 Le 25/02/2010, à 17:48

AnsuzPeorth

Re : [python.débutant][résolu] Lancer application en arrière plan.

J'aurais pu essayer des jours ... J'ai la version 2.5 de python .....Ca risque pas de fonctionner kill !
En tout cas, merci d'avoir répondu, cela m'a permis de comprendre un peu mieux la doc ...

Pour contourner: (y a surement plus simple ?)

inst_vlc =subprocess.Popen(['vlc'])
pid =inst_vlc.pid
time.sleep(10)
os.kill(pid, 3)

C'est qd même bien foutu python (qd on maitrise, sinon, c'est la mer..., et je suis en plein dedans smile)

lacmd =subprocess.Popen(['ls', path], stdout=PIPE)
#objet variable
var =lacmd.communicate()[0]
#objet fichier
var =lacmd.stdout

.

Thx.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#10 Le 25/02/2010, à 18:29

HymnToLife

Re : [python.débutant][résolu] Lancer application en arrière plan.

AnsuzPeorth a écrit :

J'aurais pu essayer des jours ... J'ai la version 2.5 de python .....Ca risque pas de fonctionner kill !

Bah il faut te mettre à jour. yikes


- Rodrigue, as-tu du cœur ?
- Non, mais j'ai du pique !

Hors ligne

#11 Le 26/02/2010, à 13:57

AnsuzPeorth

Re : [python.débutant][résolu] Lancer application en arrière plan.

Bjr,
Je vais attendre la prochaine LTS (c'est pour bientot !).

Le sujet est passé en résolu, le module pour récupérer les infos systeme:  PSI
http://bitbucket.org/chrismiles/psi/downloads/


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne