Surveiller si fichier modifié par d'autres programmes

bonjour à tou[te]s

petit souci dans le script :

#!/usr/bin/python -Bu
# -*- coding: utf-8 -*-
import gi,sys
gi.require_version("Gtk","4.0")
from gi.repository import Gtk,Gio
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
class call():
	def back(a,b,c,evt,*_):
		print("*"+str(evt)+"*")
class ecran(Gtk.ApplicationWindow):
	def __init__(self,app,*args,**kwargs):
		Gtk.ApplicationWindow.__init__(self,application=app)
		btn=Gtk.Button(label=	"surveillance de "+sys.argv[0]+
								"\ncliquer pour quitter")
		btn.connect("clicked",self.quitter)
		self.set_child(btn)
		self.present()
		**#======== *mis ici, ça ne donne rien* ========**
**		fich=Gio.File.new_for_path(sys.argv[0])**
**		mon=fich.monitor_file(Gio.FileMonitorFlags.NONE,None)**
**		mon.connect("changed",call.back)**
**		#================**
	def quitter(self,*_):
		self.close()
app=Gtk.Application()
app.connect('activate',ecran)
**"""**
**#======== *mis ici, ça baigne* ========**
**fich=Gio.File.new_for_path(sys.argv[0])**
**mon=fich.monitor_file(Gio.FileMonitorFlags.NONE,None)**
**mon.connect("changed",call.back)**
**#================**
**"""**
app.run(sys.argv)

je tente de surveiller si un fichier est modifié par un autre programme
( pour le test, le script lui-même )
si je place le contrôle dans le corps du programme,
aucune réaction, alors qu’au lancement, ça marche
dans mon application j’ai besoin de mettre cette
surveillance “en dynamique”, au fur et à mesure
on peut faire comment ?
merci d’avance

J’ai tenté, mais je n’arrive même pas à installer la v4 de Gtk qui n’est pas compatible avec la v3…

Ah et sinon il doit y avoir moyen de surveiller un répertoire depuis le système (plus efficace je pense) et de remonter les signaux au programme qui gère suivant ce qu’il doit surveiller exactement. Mais je ne sais pas quelles sont tes contraintes.

merci pour votre intervention

oh que oui ! de plus, bonjour la doc pour gtk4 !
mais bon, le “problème” doit être le même en gtk3

en fait, à la demande, j’ouvre différents fichiers dans mon
programme, venant de n’importe quel répertoire,
je tente d’être prévenu si “quelqu’un d’autre”
les modifie

Quoi qu’il en soit, je suppose que ton code n’est appelé qu’une seule fois dans l’appli. C’est pour ça qu’il ne fonctionne pas je pense.

pas compris !?!
mais bon, en gérant cela “hors du
corps du programme”, réussi à
faire ce que je voulais
merci de votre aide

Ce que je veux dire c’est que GTK doit gérer une “boucle d’événements” une fois l’application lancée. Le code qui crée l’écran est donc appelé pendant l’initialisation et tu modifies tes fichiers plus tard, donc plus géré par le code ?