Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
nombre réponses : 25

#0 -1 »  (+ ou - Résolu) arrêter un seul processus vlc en ligne de commande » Le 22/01/2015, à 10:16

totola
Réponses : 13

Bonjour,
dans un programme, je lance plusieurs processus vlc (cvlc en fait) en même temps. Je voudrais savoir si c'est possible d'en arrêter un seul et que les autres fonctionnent encore... évidemment killall cvlc me tue tout d'un coup...
Merci

#1 Re : -1 »  (+ ou - Résolu) arrêter un seul processus vlc en ligne de commande » Le 22/01/2015, à 10:44

totola
Réponses : 13

Merci de la réponse, en effet c'est une bonne piste!
Mais est-ce possible d'attribuer un PID à la création du processus, de cette manière je saurais lequel tuer??
En gros mon programme contient plusieurs fois un groupe de deux boutons: un pour lancer le processus et un autre pour le tuer et il faut que le bouton pour tuer le processus corresponde avec celui qui l'a lancé...

#2 Re : -1 »  (+ ou - Résolu) arrêter un seul processus vlc en ligne de commande » Le 22/01/2015, à 11:26

totola
Réponses : 13

Ok mais je m'emmêle un peu les pinceaux avec les commandes shell... Il faut stocker le pid dans un fichier? Comment le rappeler ensuite?
Merci

#4 Re : -1 »  (+ ou - Résolu) arrêter un seul processus vlc en ligne de commande » Le 22/01/2015, à 15:19

totola
Réponses : 13

Ok merci!
Avec tout ça je devrais à me débrouiller!

Pour l'instant je coince avec un truc plus gênant: les threads... J'aimerais pouvoir lancer plusieurs processus en même temps, et ça n'a pas l'air si simple...

http://forum.ubuntu-fr.org/viewtopic.php?id=1770441

En attendant ce fil est résolu, merci! smile

#6 Re : -1 »  (+ ou - Résolu) arrêter un seul processus vlc en ligne de commande » Le 29/01/2015, à 20:07

totola
Réponses : 13
genma a écrit :
#lancer VLC et récupérer le pid dans une variable
monPID = $(vlc & PID=$!)
# Afficher le PID (valeur dans la variable)
echo $monPID

J'ai dit résolu un peu vite peut-être... En suivant les instructions ci-dessus la variable monPID ne contient rien du tout... hmm

#7 Re : -1 »  (+ ou - Résolu) arrêter un seul processus vlc en ligne de commande » Hier à 19:03

totola
Réponses : 13

Merci, en fait le problème venait d'autre part: j'utilise ma commande dans un programme python avec le module fabric (pour utiliser ssh) et la commande run()... Et c'est pas si simple comme le dit la doc elle-même:

http://www.fabfile.org/faq.html#why-can … abric-hang

Ce qui est bizarre et si quelqu'un peut m'expliquer, c'est que la commande:

run('cvlc & PID=$!')
ou

run('cvlc & PID=$! &')

ne marchent pas... cvlc ne se lance même pas

en revanche:

run('cvlc & PID=$! | while (true) do sleep 100;done')

ou n'importe quel processus ou boucle infinie, et là tout fonctionne bien, cvlc se lance, je peux le tuer avec le PID... Bizarre... :s

#8 -1 »  [Résolu]Condition "si un processus est démarré..." » Hier à 09:01

totola
Réponses : 2

Bonjour, je cherche à réaliser une action en fonction de si un processus est lancé

ps -C "avconv"
  PID TTY          TIME CMD
 3880 pts/5    00:00:00 avconv

si "avconv est bien présent dans le retour ci-dessus"
     faire: "action 1"
sinon "action 2"

Bon, la condition if -else, je devrais trouver, mais comment faire pour trouver si avconv est bien lancé?
Merci

#9 Re : -1 »  [Résolu]Condition "si un processus est démarré..." » Hier à 10:24

totola
Réponses : 2

Ah ouais... aussi simple... hmm
Le pire c'est que ça marche! J'aurais pu trouver tout seul..
Désolé, je suis un vrai boulet :s

Merci serged! smile

#10 Re : -1 »  [Résolu]Tkinter programmation parallèle avec threading » Le 25/01/2015, à 21:25

totola
Réponses : 8

Ok, j'avais vu cette page mais pas bien tout compris... Et puis je n'étais pas sûr que ça corresponde à mon problème. Mais si tu le dis, je vais me plonger sérieusement là-dedans et essayer de l'adapter chez moi. Je reviens dès que j'ai des soucis (dans pas très longtemps normalement) big_smile
Merci

#11 Re : -1 »  [Résolu]Tkinter programmation parallèle avec threading » Le 25/01/2015, à 21:44

totola
Réponses : 8

J'ai l'impression que c'est ça:

1. Create a Queue object in the main thread

2. Create a new thread with access to that queue

3. Check periodically the queue in the main thread

Mais il me manque cruellement un exemple simple pour comprendre... hmm

#12 Re : -1 »  [Résolu]Tkinter programmation parallèle avec threading » Le 25/01/2015, à 21:51

totola
Réponses : 8

Ok je suis grillé.. Je reviens après avoir travaillé sérieusement mon sujet... tongue

La flemme, la fatigue, le mal à la tête...  et toussa...
Une bonne aspirine et je m'y remet! smile
@+

#13 Re : -1 »  [Résolu]Tkinter programmation parallèle avec threading » Le 25/01/2015, à 22:58

totola
Réponses : 8

J'ai trouvé ça qui m'a l'air étrangement simple mais semble marcher dans mon cas... ??

def handle_click():
        def callback():
            # Mon code ici ...
            # .....
        t = threading.Thread(target=callback)
        t.start()

#14 Re : -1 »  [Résolu]Tkinter programmation parallèle avec threading » Le 25/01/2015, à 23:09

totola
Réponses : 8

Ok  wink
Merci
Je passe en résolu et je vais me coucher encore moins bête... Bonne nuit smile

#15 -1 »  [Résolu]Tkinter canvas créer puis effacer une ligne » Le 24/01/2015, à 15:12

totola
Réponses : 12

Bonjour,
avec un système de 2 cases à cocher et un bouton associé, je créé une ligne d'un point A à un point B lorsque je clique sur le bouton.
J'aimerais pouvoir l'effacer de la même manière... (lorsque les cases sont séléctionnées et en cliquant sur un autre bouton). Voilà à quoi ressemble mon code:

		canvas1 = Tkinter.Canvas(width = 110, height = 390)
		canvas1.place(x=278, y=253, anchor="c")

#retour1 et retour2 sont liés aux cases à cocher et TracerTrait() est la fonction appelé par le bouton 1

               def TracerTrait():
			if retour1.get() and retour2.get(): 
				a21 = canvas1.create_line(6,240,6,345, fill="green",arrow=BOTH)

#EffacerTrait() est la fonction appelée par le bouton 2

               def EffacerTrait():
			if retour1.get() and retour2.get(): 
				canvas1.delete(a21)

Alors, j'ai remarqué que si je "sors" la création de la ligne de la condition if (fonction du bouton 1) et que je la créé directement dans le programme, le bouton pour effacer fonctionne bien mais pas si je la créé comme je voudrais avec le bouton.

L'erreur est la suivante:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1489, in __call__
    return self.func(*args)
  File "a.py", line 749, in DeconnecterPostes
    EffacerTrait()
  File "a.py", line 692, in EffacerTrait
    canvas1.delete(a21)
NameError: global name 'a21' is not defined

Merci de votre aide smile

#16 Re : -1 »  [Résolu]Tkinter canvas créer puis effacer une ligne » Le 24/01/2015, à 18:25

totola
Réponses : 12
tiramiseb a écrit :

Salut,

Tu as défini une variable a21 locale à ta fonction TracerTrait. Du coup la fonction EffacerTrait n'y a pas accès.
Il faut que tu trouves une manière de conserver cette référence en dehors de la fonction si tu veux y accéder.

D'accord, je comprends au moins en principe...

Tu peux éventuellement mettre une variable directement dans ton module Python, mais bon ça fait genre variable globale, c'est pas joli joli.

ça je ne sais pas faire? Mais même si c'est pas trop joli, je cherche juste à ce que ça marche... :°

Enfin, je vois que les définitions de fonctions sont indentées, cela voudrait dire qu'elles sont dans quelque chose, par contre il n'y a pas l'argument "self" alors ce ne sont pas des méthodes d'une classe : qu'as-tu fait à ce niveau-là ?

Alors voici le début et la fin de mon code:

#!/usr/bin/python
# -*- coding: iso-8859-1 -*-

import Tkinter,os,time
import tkFileDialog
from Tkinter import *
from tkFileDialog import askopenfilename
from fabric.api import *
 


class simpleapp_tk(Tkinter.Tk):
	def __init__(self,parent):
		Tkinter.Tk.__init__(self,parent)
		self.parent = parent
		self.initialize()

	def initialize(self):
		self.grid()

		self.entryVariable = Tkinter.StringVar()
		self.entry = Tkinter.Entry(self,textvariable=self.entryVariable)


#le bout de mon code:

                canvas1 = Tkinter.Canvas(width = 110, height = 390)
		canvas1.place(x=278, y=253, anchor="c")

		def TracerTrait():
			if retour1.get() and retour2.get(): 
				a21 = canvas1.create_line(6,240,6,345, fill="green",arrow=BOTH)

		def EffacerTrait():
			if retour1.get() and retour2.get(): 
				canvas1.delete(a21)

#Et la fin

                self.resizable(True,True)
		self.entry.focus_set()
		self.entry.selection_range(0, Tkinter.END)




if __name__ == "__main__":
    app = simpleapp_tk(None)
    app.mainloop()

Voilà, Je débute en programmation et en python, alors je ne maîtrise pas tout encore :s
merci en tout cas pour l'aide! smile

#17 Re : -1 »  [Résolu]Tkinter canvas créer puis effacer une ligne » Le 24/01/2015, à 19:55

totola
Réponses : 12

Je crois que j'ai trouvé le coup de la variable  globale:

global a21

Et voilà... Mais pourquoi c'est pas joli joli..???

#18 Re : -1 »  [Résolu]Tkinter canvas créer puis effacer une ligne » Le 25/01/2015, à 19:43

totola
Réponses : 12

Ah oui... c'est parfaitement clair... :s
Bon j'essaierai de m'en souvenir si ça pose problème pour la suite... smile
Pour les indentations, c'est juste une erreur de copier-coller je pense... Je corrige sur le post.

Sinon, autre chose, pas une petite idée concernant les threads?? Je galère trop là... :s

http://forum.ubuntu-fr.org/viewtopic.php?id=1770441

#19 Re : -1 »  [Résolu]Tkinter canvas créer puis effacer une ligne » Le 25/01/2015, à 19:54

totola
Réponses : 12

Ah ok, je vais regarder ça! ça paraît plus logique en effet. Merci!

#20 Re : -1 »  [Résolu]Tkinter canvas créer puis effacer une ligne » Le 25/01/2015, à 19:58

totola
Réponses : 12
tiramiseb a écrit :

Par ailleurs, pourquoi créer une méthode "initialize" alors que tu utilises déjà le "__init__" tout à fait standard ?

Ben parce que pour l'instant je copie-colle des trucs sans tout comprendre... :s
Mais grâce aux gentils forumeurs qui prennent de leur temps pour m'expliquer je progresse petit à petit wink
Merci beaucoup!

#21 Re : -1 »  [Résolu]Tkinter canvas créer puis effacer une ligne » Le 25/01/2015, à 20:38

totola
Réponses : 12

Bon j'ai déjà remplacé toutes mes variables globales (j'en avais un paquet...) par des self.var dans toutes mes fonctions.
ça marche... Merci!

#22 Re : -1 »  [Résolu]Tkinter canvas créer puis effacer une ligne » Le 25/01/2015, à 21:08

totola
Réponses : 12

Oui, j'ai également viré ça sans soucis:

self.initialize()
	def initialize(self):

Merci, je commence à y voir plus clair.

#23 Re : -1 »  [Résolu]Tkinter canvas créer puis effacer une ligne » Le 25/01/2015, à 21:11

totola
Réponses : 12

Et sinon, pour mes histoires de threads? Pas de pistes?
J'ai cru voir que ce n'était pas simple avec Tkinter... Est-ce qu'il vaudrait mieux que je recode le tout avec pyGTK ou wxpython?? Il y a l'air d'y avoir plus d'exemples et de docs...

#24 Re : -1 »  [résolu]connecter micro de pc vers sortie audio d'un autre pc réseau » Le 25/01/2015, à 12:30

totola
Réponses : 2

Pour diminuer la latence, il y a une option dans vlc: Préférences - Lecture - Réseau - politique de cache par défaut: choisir la plus faible possible.

Et c'est beaucoup mieux! smile