Bonjour,
J'ai ouvert une série de fenêtres Toplevel avec le même nom, chacune
comportant un bouton de commande pour agir sur la fenêtre.
Le problème est que tous ces boutons pointent vers une seule procédure
qui n'agit que sur la dernière fenêtre ouverte et non pas sur la
fenêtre du bouton cliqué.
D'où ma question : quand on clique sur un bouton d'une fenêtre,
comment récupérer le nom de cette fenêtre pour agir dessus ?
voici un petit prog d'exemple : tous les boutons agissent sur la
dernière fenêtre !......
merci. YLC
# test multifenêtres
from Tkinter import *
def rouge() :
top.config(bg='red')
def vert() :
top.config(bg='green')
def fenetres() :
global top
i=0
while i < 5 :
i=i+1
top=Toplevel()
top.title("toplevel"+str(i))
top.geometry("150x20+20+"+str(i*50))
broug = Button(top, text = 'rouge', command = rouge)
bvert = Button(top, text = 'vert', command = vert)
broug.pack(side=LEFT)
bvert.pack()
# main
fen = Tk(className="Fenetre racine")
fenetres()
fen.mainloop()
# #############################################
Bonjour,
J'ai ouvert une série de fenêtres Toplevel avec le même nom, chacune
comportant un bouton de commande pour agir sur la fenêtre.
Le problème est que tous ces boutons pointent vers une seule procédure
qui n'agit que sur la dernière fenêtre ouverte et non pas sur la
fenêtre du bouton cliqué.
D'où ma question : quand on clique sur un bouton d'une fenêtre,
comment récupérer le nom de cette fenêtre pour agir dessus ?
voici un petit prog d'exemple : tous les boutons agissent sur la
dernière fenêtre !......
merci. YLC
# test multifenêtres
from Tkinter import *
def rouge() :
top.config(bg='red')
def vert() :
top.config(bg='green')
def fenetres() :
global top
i=0
while i < 5 :
i=i+1
top=Toplevel()
top.title("toplevel"+str(i))
top.geometry("150x20+20+"+str(i*50))
broug = Button(top, text = 'rouge', command = rouge)
bvert = Button(top, text = 'vert', command = vert)
broug.pack(side=LEFT)
bvert.pack()
# main
fen = Tk(className="Fenetre racine")
fenetres()
fen.mainloop()
# #############################################
Bonjour,
J'ai ouvert une série de fenêtres Toplevel avec le même nom, chacune
comportant un bouton de commande pour agir sur la fenêtre.
Le problème est que tous ces boutons pointent vers une seule procédure
qui n'agit que sur la dernière fenêtre ouverte et non pas sur la
fenêtre du bouton cliqué.
D'où ma question : quand on clique sur un bouton d'une fenêtre,
comment récupérer le nom de cette fenêtre pour agir dessus ?
voici un petit prog d'exemple : tous les boutons agissent sur la
dernière fenêtre !......
merci. YLC
# test multifenêtres
from Tkinter import *
def rouge() :
top.config(bg='red')
def vert() :
top.config(bg='green')
def fenetres() :
global top
i=0
while i < 5 :
i=i+1
top=Toplevel()
top.title("toplevel"+str(i))
top.geometry("150x20+20+"+str(i*50))
broug = Button(top, text = 'rouge', command = rouge)
bvert = Button(top, text = 'vert', command = vert)
broug.pack(side=LEFT)
bvert.pack()
# main
fen = Tk(className="Fenetre racine")
fenetres()
fen.mainloop()
# #############################################
Bonjour,
Merci pour ta réponse, elle fontionne effectivement bien et est
sûrement la plus élégante. Malheureusement, je ne maitrise pas bien
l'orienté objet et dès que cela se complique je m'y perd.
N'y aurait-il pas la possibilité d'identifier le nom de la fenêtre
dans les procédures "rouge" et "vert" pour lui appliquer la commande ?
Bonjour,
Merci pour ta réponse, elle fontionne effectivement bien et est
sûrement la plus élégante. Malheureusement, je ne maitrise pas bien
l'orienté objet et dès que cela se complique je m'y perd.
N'y aurait-il pas la possibilité d'identifier le nom de la fenêtre
dans les procédures "rouge" et "vert" pour lui appliquer la commande ?
Bonjour,
Merci pour ta réponse, elle fontionne effectivement bien et est
sûrement la plus élégante. Malheureusement, je ne maitrise pas bien
l'orienté objet et dès que cela se complique je m'y perd.
N'y aurait-il pas la possibilité d'identifier le nom de la fenêtre
dans les procédures "rouge" et "vert" pour lui appliquer la commande ?
Ne cherche pas à m'expliquer l'Oo, j'ai déjà passé des heures dessus
et je comprend certains trucs, mais cela m'embrouille.....et je
préfère m'en passer........tant que c'est possible.
Tu ne réponds pas à ma question : peut-on récupérer l'identifiant
d'une fenêtre losqu'on clique un bouton dans celle-ci pour lui
appliquer la commande ?
merci.
Ne cherche pas à m'expliquer l'Oo, j'ai déjà passé des heures dessus
et je comprend certains trucs, mais cela m'embrouille.....et je
préfère m'en passer........tant que c'est possible.
Tu ne réponds pas à ma question : peut-on récupérer l'identifiant
d'une fenêtre losqu'on clique un bouton dans celle-ci pour lui
appliquer la commande ?
merci.
Ne cherche pas à m'expliquer l'Oo, j'ai déjà passé des heures dessus
et je comprend certains trucs, mais cela m'embrouille.....et je
préfère m'en passer........tant que c'est possible.
Tu ne réponds pas à ma question : peut-on récupérer l'identifiant
d'une fenêtre losqu'on clique un bouton dans celle-ci pour lui
appliquer la commande ?
merci.
Le problème est plus compliqué que dans l'exemple que j'ai écrit, car
dans chaque fenetre de mon prog il y a un canvas et dans ce canvas il
y a une image. Les boutons servent à modifier l'image (rotation,
taille,..) et à chaque fois il faut regénérer l'affichage dans la
fenêtre.
Il y a un integer (.nnnnnnnnnn) identifiant chaque fenêtre ou
(nnnnnnnn.nnnnnnnn) pour l'identifier avec son parent. C'est cet
identifiant que je pensais récupérer au clic sur un bouton pour
l'affecter à ma variable nomfenetre.
C'est pas possible ça ?
Le problème est plus compliqué que dans l'exemple que j'ai écrit, car
dans chaque fenetre de mon prog il y a un canvas et dans ce canvas il
y a une image. Les boutons servent à modifier l'image (rotation,
taille,..) et à chaque fois il faut regénérer l'affichage dans la
fenêtre.
Il y a un integer (.nnnnnnnnnn) identifiant chaque fenêtre ou
(nnnnnnnn.nnnnnnnn) pour l'identifier avec son parent. C'est cet
identifiant que je pensais récupérer au clic sur un bouton pour
l'affecter à ma variable nomfenetre.
C'est pas possible ça ?
Le problème est plus compliqué que dans l'exemple que j'ai écrit, car
dans chaque fenetre de mon prog il y a un canvas et dans ce canvas il
y a une image. Les boutons servent à modifier l'image (rotation,
taille,..) et à chaque fois il faut regénérer l'affichage dans la
fenêtre.
Il y a un integer (.nnnnnnnnnn) identifiant chaque fenêtre ou
(nnnnnnnn.nnnnnnnn) pour l'identifier avec son parent. C'est cet
identifiant que je pensais récupérer au clic sur un bouton pour
l'affecter à ma variable nomfenetre.
C'est pas possible ça ?
Je suis désolé d'insister, mais je crois qu'on ne parle pas de la même
chose. Je ne maitrise pas Python aussi bien que vous et j'ai renoncé
à faire de l'objet. Je suis certain qu'on peut écrire des progs sans
faire de l'Oo puisque j'ai réussi jusqu'à présent à le faire.
Même si cela peut paraitre archaïque ou démodé, voilà ce que je
voudrais faire dans mon exemple :
from Tkinter import *
def rouge() :
IdFen = //get id de la fenêtre activée// <<<<<<< ce que je
cherche à faire
IdFen.config(bg='red') <<<<<<< pour
pouvoir faire ça
def vert() :
IDfen = //get id de la fenêtre activée// <<<<<<< ce que je
cherche à faire
IdFen.config(bg='green') <<<<<<< pour
pouvoir faire ça
def fenetres() :
global top
i=0
while i < 5 :
i=i+1
top=Toplevel()
top.title("toplevel"+str(i))
top.geometry("150x20+20+"+str(i*50))
broug = Button(top, text = 'rouge', command = rouge)
bvert = Button(top, text = 'vert', command = vert)
broug.pack(side=LEFT)
bvert.pack()
# main
fen = Tk(className="Fenetre racine")
fenetres()
fen.mainloop()
.......et sans utiliser de "self"..... :)
Il doir y avoir une commande du genre Cget, mais celle-ci ne
s'applique pas aux options des toplevels.
Je suis désolé d'insister, mais je crois qu'on ne parle pas de la même
chose. Je ne maitrise pas Python aussi bien que vous et j'ai renoncé
à faire de l'objet. Je suis certain qu'on peut écrire des progs sans
faire de l'Oo puisque j'ai réussi jusqu'à présent à le faire.
Même si cela peut paraitre archaïque ou démodé, voilà ce que je
voudrais faire dans mon exemple :
from Tkinter import *
def rouge() :
IdFen = //get id de la fenêtre activée// <<<<<<< ce que je
cherche à faire
IdFen.config(bg='red') <<<<<<< pour
pouvoir faire ça
def vert() :
IDfen = //get id de la fenêtre activée// <<<<<<< ce que je
cherche à faire
IdFen.config(bg='green') <<<<<<< pour
pouvoir faire ça
def fenetres() :
global top
i=0
while i < 5 :
i=i+1
top=Toplevel()
top.title("toplevel"+str(i))
top.geometry("150x20+20+"+str(i*50))
broug = Button(top, text = 'rouge', command = rouge)
bvert = Button(top, text = 'vert', command = vert)
broug.pack(side=LEFT)
bvert.pack()
# main
fen = Tk(className="Fenetre racine")
fenetres()
fen.mainloop()
.......et sans utiliser de "self"..... :)
Il doir y avoir une commande du genre Cget, mais celle-ci ne
s'applique pas aux options des toplevels.
Je suis désolé d'insister, mais je crois qu'on ne parle pas de la même
chose. Je ne maitrise pas Python aussi bien que vous et j'ai renoncé
à faire de l'objet. Je suis certain qu'on peut écrire des progs sans
faire de l'Oo puisque j'ai réussi jusqu'à présent à le faire.
Même si cela peut paraitre archaïque ou démodé, voilà ce que je
voudrais faire dans mon exemple :
from Tkinter import *
def rouge() :
IdFen = //get id de la fenêtre activée// <<<<<<< ce que je
cherche à faire
IdFen.config(bg='red') <<<<<<< pour
pouvoir faire ça
def vert() :
IDfen = //get id de la fenêtre activée// <<<<<<< ce que je
cherche à faire
IdFen.config(bg='green') <<<<<<< pour
pouvoir faire ça
def fenetres() :
global top
i=0
while i < 5 :
i=i+1
top=Toplevel()
top.title("toplevel"+str(i))
top.geometry("150x20+20+"+str(i*50))
broug = Button(top, text = 'rouge', command = rouge)
bvert = Button(top, text = 'vert', command = vert)
broug.pack(side=LEFT)
bvert.pack()
# main
fen = Tk(className="Fenetre racine")
fenetres()
fen.mainloop()
.......et sans utiliser de "self"..... :)
Il doir y avoir une commande du genre Cget, mais celle-ci ne
s'applique pas aux options des toplevels.