IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Une ligne verte et une image superposee dans un Canvas


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Une ligne verte et une image superposee dans un Canvas
    Bonjour tout le monde! Je debute un peu sur Tkinter et je rencontre le probleme suivant sur un jeu que je programme:
    J'ai crée un Canvas dans lequel j'affiche une image de mon personnage ainsi qu'un espace pour la barre de vie, cependant quand je rajoute une barre de vie, c'est a dire une ligne verte dont le nombre de pixel correspond au % de vie de mon personnage, elle ne s'affiche pas (ou alors elle est derriere l'image, je ne sais pas trop). Le but est donc de superposer cette ligne sur mon image (je sais comment placer la ligne).
    Pour l'instant mon code ressemble à ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    def Combat(personnage,adversaire):
     
        combat=Tk()
        combat.geometry("645x610")
        combat.title("Scene de combat")
        combat.configure(bg = "white")
        #Initialisation de la fenetre de combat
     
     
        if (adversaire[0]=="Hericendre"):                                               #choix d'un adversaire aléatoire après c'est le meme code pour mon propre personnage
     
            barredevie2=floor(((adversaire[8])/(adversaire[9]))*100)                                 #nombre de pixel de la barre de vie de l'ennemie
            affichage_personnage2 = Canvas(combat, width=640, height=310,bg = "white")   #mise en place de mon canvas
            affichage_personnage2.create_line(3,0,5,barredevie2,fill='green',width=5)           #mise en place de ma barre de vie
            haut = PhotoImage(file="Hericendre.png")                        
            affichage_personnage2.create_image(0, 0, anchor=NW, image=haut)                  #telechargement de l'image et mise en place de celle-ci
            affichage_personnage2.pack()
    Pour l'instant tout mon programme marche sauf cette barre de vie que l'on ne voit pas =/

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    La superposition (z-order) des objets du Canvas (crées par .create_XXX) se fait suivant l'ordre de leur création.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import tkinter as tk
     
    canvas = tk.Canvas()
    canvas.pack()
     
    canvas.create_line(0, 0, 250, 250, fill='green', width=3)
     
    for z in range(0, 200, 10):
        canvas.create_rectangle(z, z, z+40, z+40, fill='blue', outline='red')
     
    canvas.create_line(50, 50, 150, 150, fill='black')
    tk.mainloop()
    Si on veut que la ligne verte soit "au dessus" on peut:
    • a créer en dernier,
    • utiliser .tag_raise (.tag_lower)


    Exemple: on place la ligne verte juste en dessous de la noire et au dessus des carrés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import tkinter as tk
     
    canvas = tk.Canvas()
    canvas.pack()
     
    iid = canvas.create_line(0, 0, 250, 250, fill='green', width=3)
     
    for z in range(0, 200, 10):
        canvas.create_rectangle(z, z, z+40, z+40, fill='blue', outline='red')
     
    iid2 = canvas.create_line(50, 50, 150, 150, fill='black', width=3)
    canvas.tag_lower(iid, iid2)
    tk.mainloop()
    Pour le reste, çà devrait se trouver dans votre documentation préférée de tkinter/tk...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Remonter le contenu d'une ligne non vide à une ligne vide
    Par sossso112333 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/08/2014, 12h58
  2. Réponses: 2
    Dernier message: 15/09/2008, 11h42
  3. Imposer une valeur dans une ligne "identity" d'une
    Par mibo94 dans le forum Access
    Réponses: 1
    Dernier message: 26/11/2005, 16h59
  4. Ajout de d'une ligne et d'un champ input dans un tableau
    Par zetta dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/11/2005, 10h45
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo