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

Python Discussion :

Boutton image --> pas d'interaction Et pas compris la logique de mon programme (démineur)


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Par défaut Boutton image --> pas d'interaction Et pas compris la logique de mon programme (démineur)
    Salut, Dsl je spam les q°

    1)

    je comprend pas pourquoi dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    from tkinter import * 
    fenetre = Tk()
    photo =PhotoImage(file='mine.gif')
     
     
    for ligne in range(10):
        for colonne in range(10):
            Button(fenetre,image=photo, borderwidth=1).grid(row=ligne, column=colonne)
     
    fenetre.mainloop()
    Mes bouttons intéragies

    Mais dans mon programme principal les bouttons ni ne marche ni me mets l'image :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    from random import*
    from tkinter import * 
    fenetre = Tk()
    def funcs1(L):
        mines(L)
    def funcsBoutton(mine,colonne,ligne,x,y,L):
        minesAutours =0
        if mine ==1:
            print("oups")
        else:
            print("piouf")
            for colonnex in range(int((L*L)/3)):
                for ligney in range(int((L*L)/3)):
                    if (colonne-1 == x[colonnex]) and (ligne== y[ligney]):
                        minesAutours=minesAutours+1
                    if (colonne-1 == x[colonnex]) and (ligne-1== y[ligney]):
                        minesAutours=minesAutours+1
                    if (colonne == x[colonnex]) and (ligne-1== y[ligney]):
                        minesAutours=minesAutours+1
                    if (colonne-1 == x[colonnex]) and (ligne+1== y[ligney]):
                        minesAutours=minesAutours+1
                    if (colonne+1 == x[colonnex]) and (ligne-1== y[ligney]):
                        minesAutours=minesAutours+1
                    if (colonne+1 == x[colonnex]) and (ligne+1== y[ligney]):
                        minesAutours=minesAutours+1
                    if (colonne+1 == x[colonnex]) and (ligne== y[ligney]):
                        minesAutours=minesAutours+1
                    if (colonne == x[colonnex]) and (ligne+1== y[ligney]):
                        minesAutours=minesAutours+1
            print(minesAutours)
     
     
     
    def mines(L):
        x= []
        y=[]
        for mines in range(int((L*L)/3)):
            x.append(randrange(L))
            y.append(randrange(L))
        print(x)
        print(y)
        imprime(L,x,y)
     
     
     
     
     
    def imprime(L,x,y):
        window = Toplevel(fenetre)
        photo =PhotoImage(file='mine.gif')
        for ligne in range(L):
            for colonne in range(L):
                Button(window,image=photo, borderwidth=1,command=lambda mine =0:funcsBoutton(mine,colonne,ligne,x,y,L)).grid(row=ligne, column=colonne)
                for mines in range(int((L*L)/3)):
                    if (colonne ==x[mines]) and (ligne == y[mines]):
                        Button(window,image=photo, borderwidth=1,command=lambda mine =1:funcsBoutton(mine,colonne,ligne,x,y,L)).grid(row=ligne, column=colonne)
     
     
     
    def choixDeCasses():
        label = Label(fenetre, text="difficulté :")
        label.pack()
        value = StringVar() 
        bouton1 = Button(fenetre, text="Easy", relief=RAISED, command=lambda x=6:funcs1(x))
        bouton2 = Button(fenetre, text="Normal", relief=RAISED,command=lambda x=10:funcs1(x))
        bouton3 = Button(fenetre, text="Hard", relief=RAISED,command=lambda x=12:funcs1(x))
        bouton1.pack()
        bouton2.pack()
        bouton3.pack()
     
     
    choixDeCasses()
    fenetre.mainloop()

    deplus quand je lance mon programme, il ne calcule pas le bon nombre de "bombe" autours d'une case, et je n'arrive pas à trouver ce qu'il calcule dans
    funcsBoutton()

    Merci de m'avoir lue, et désolé si je m'exprime mal

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Lorsque vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def imprime(L,x,y):
        window = Toplevel(fenetre)
        photo = PhotoImage(file='mine.gif')
    photo est une variable locale.
    A la fin de la fonction, elle sera "déréférencée", ce qui entraînera la destruction de l'objet associé (PhotoImage) et... le bouton avec rien dedans, c'est comme s'il n'était pas affiché.
    Utilisez une variable globale.

    Quand à: Button(...,command=lambda mine =0:funcsBoutton(mine,...)). autant écrire command=lambda : funcsBoutton(0, ...).

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

Discussions similaires

  1. images défilantes : pourquoi ça ne marche pas tout le temps ?!
    Par Istrella dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/10/2007, 17h56
  2. Réponses: 2
    Dernier message: 04/10/2007, 13h42
  3. Réponses: 1
    Dernier message: 12/01/2007, 11h20
  4. aperçu d image avec input type file marche pas dans ffx
    Par siddh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/11/2005, 09h11
  5. background-image et js qui ne fonctionne pas
    Par trialrofr dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/02/2005, 11h45

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