J'essaie de dessiner des formes devant une image, mais je ne les vois pas - elles sont derrière. Comment faire reculer l'image d'un calque / les formes avancer d'un calque? Voici mon code:
photo = PhotoImage(file='Alveoli.ppm') img = Label(tk, image=photo) img.image = photo img.place(x=0, y=0) oc = canvas.create_oval(0, 0, 400, 400, fill = 'red')
@Philipp Après avoir utilisé tag_raise
cela ressemble toujours à ceci (l'image est à gauche):
3 Réponses :
Vous devriez pouvoir utiliser cette méthode: tag_raise()
Ce qui dans votre cas devrait ressembler à ceci:
canvas.tag_raise(oc)
C'était toujours derrière l'image. J'utilise Python 3.7, juste au cas où tag_raise()
est une chose 2.x.
De plus, lorsque j'utilise tag_raise
, est-ce que j'utilise photo
ou img
?
Voici un lien vers la documentation. Vous souhaitez soit élever l'ovale, soit abaisser l'img. Donc, si vous avez utilisé tag_raise sur l'img, alors rien ne s'est passé, car c'est déjà en haut.
Désolé, je voulais dire tag_lower
.
Êtes-vous sûr que votre image et votre ovale sont tous deux sur la même toile?
Peut-il y avoir plusieurs toiles? Je suis pratiquement sure. Je n'ai fait qu'une seule toile.
Vous ne pouvez pas superposer des éléments de canevas au-dessus des widgets incorporés. Si vous souhaitez dessiner au-dessus d'une image, l'image doit être un objet canevas créé avec create_image
.
Une fois que vous avez fait cela, vous pouvez utiliser les méthodes de canevas lift
et lower
pour modifier l'ordre d'empilement (z-index) d'un élément.
photo = PhotoImage(file='Alveoli.ppm') canvas.create_image(0, 0, image=photo, anchor="nw") oc = canvas.create_oval(0, 0, 400, 400, fill = 'red')
utilisez simplement widget.tkraise(aboveThis=ob)
si vous voulez que le widget vienne au-dessus de tous les autres widgets, utilisez widget.tkraise()