Bonjour @mapommfj,
J’ai plusieurs pistes, en partant de ton programme :
result = subprocess.run(["python3", f1], capture_output=True, text=True)
k=result.stdout.split('\n')
for n in range (0,len(k)):
L1=Label(fen1, text = k[n], bg='bisque', font=("Verdana", 10)).place(x=xl, y=yl+1*d)
yl=yl+1*d
d’abord, tu peux probablement te passer de range
et itérer directement sur les lignes :
result = subprocess.run(["python3", f1], capture_output=True, text=True)
lines = result.stdout.split('\n')
for line in lines:
L1=Label(fen1, text=line, bg='bisque', font=("Verdana", 10)).place(x=xl, y=yl+1*d)
yl=yl+1*d
mais ça ne répond pas à ta question, comment « nettoyer » les lignes. La complexité ici c’est que tu as plusieurs Label
, un par ligne, pour nettoyer il faudrait tous les retrouver et les vider. Possible, mais on peut faire mieux.
On pourrait se contenter d’un seul Label
:
result = subprocess.run(["python3", f1], capture_output=True, text=True)
stdout_label = Label(fen1, text=result.stdout, bg='bisque', font=("Verdana", 10))
stdout_label.grid(column=0, row=0)
je le place lors d’une autre instruction de manière à garder une variable sur le label, la variable stdout_label
.
Maintenant que tu n’as plus qu’un label, et une variable pour y accéder, tu peux le vider, ou le changer, via :
stdout_label.config(text="")
Peut-être que dans ton contexte tu auras besoin de créer le label d’abord, une fois pour toute, puis changer son texte à chaque subprocess.run
lancé. L’idée en tout cas est de ne pas recréer le Label
à chaque fois mais de le réutiliser.