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 :

Bouton incliquable [Débutant(e)]


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Par défaut Bouton incliquable
    Bonsoir,

    Je suis en train de réaliser un logiciel simple pour doser les aliments de mes animaux.
    Sauf qu'en tant que débutant en python, je suis bloqué par mes boutons, qui ne lisent pas le script que je leur demande (ou qu'il me semble leur demander....)

    Vu que j'ai trouvé pas mal de réponses sur ce site, je demande de l'aide pour me débloquer !
    Ca doit prendre 30 secondes à un confirmé tellement ça doit être évident

    Voici le script (python 3.2.2)
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    # -*- coding: cp1252 -*-
     
     
    from tkinter import*
     
     
     
     
    nomvis1="aliment1"
    nomvis2="aliment2"
    nomvis3="aliment3"
     
     
     
     
     
    police="arial",50
    poids=0
    valeurvis1=0
    valeurvis2=0
    valeurvis3=0
    tare = 0
     
    def commandevis1():
        "changer l'état de la vis 1"
        valeurvis1=1
     
        fen1.destroy
     
    def commandevis2():
        ""
        valeurvis2=1
     
    def commandevis3():
        ""
        valeurvis3=1
     
    def tarage():
        ""
        tare=poids
     
     
    fen1 = Tk()
     
     
    tex1 = Label(fen1, text= str(poids) + ' kg', fg='red',font=police)
    tex1.grid(row=1,column=2)
     
     
    poidspartiel=str(poids-tare)
    tex2 = Label(fen1, text = poidspartiel+' kg', fg='red',font=police)
    tex2.grid(row=2,column=2)
     
     
     
     
     
    boutontare = Button(fen1, text='tare', command = tarage(),font=police)
    boutontare.grid(row=2,column=2)
     
     
    boutonvis1 = Button(fen1, text=nomvis1, command=commandevis1)
    boutonvis1.grid(row=1,column=4)
     
     
    boutonvis2 = Button(fen1, text=nomvis2, command=commandevis2)
    boutonvis2.grid(row=2,column=4)
     
    boutonvis3 = Button(fen1, text=nomvis3, command=commandevis3)
    boutonvis3.grid(row=3,column=4)
     
     
     
    if valeurvis1 :
        statutvis1='allumée'
    else:
        statutvis1=' éteinte'
     
    Label(fen1, text=statutvis1, fg='red',font=police).grid(row=1,column=5)
     
     
     
    if valeurvis2 :
        statutvis2=' allumée'
    else:
        statutvis2=' éteinte'
    Label(fen1, text=statutvis2, fg='red',font=police).grid(row=2,column=5)
     
    if valeurvis2:
        statutvis3=' allumée'
    else:
        statutvis3=' éteinte'
    Label(fen1, text=statutvis3, fg='red',font=police).grid(row=3,column=5)
     
    quit = Button(fen1, text='Quitter', command =fen1.destroy,font=police).grid(row=5,column=6)
     
     
     
    fen1.mainloop()

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    30 seconde sans doute... Légèrement plus pour les explications.

    Généralités:

    Lorsque vous présentez du code sur le forum utilisez la balise code. Vous sélectionnez votre code puis cliquez sur # au dessus de la fenêtre.
    Cela donne:
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    # -*- coding: cp1252 -*-
     
     
    from tkinter import*
     
     
     
     
    nomvis1="aliment1"
    nomvis2="aliment2"
    nomvis3="aliment3"
     
     
     
     
     
    police="arial",50
    poids=0
    valeurvis1=0
    valeurvis2=0
    valeurvis3=0
    tare = 0
     
    def commandevis1():
        "changer l'état de la vis 1"
        valeurvis1=1
     
        fen1.destroy
     
    def commandevis2():
        ""
        valeurvis2=1
     
    def commandevis3():
        ""
        valeurvis3=1
     
    def tarage():
        ""
        tare=poids
     
     
    fen1 = Tk()
     
     
    tex1 = Label(fen1, text= str(poids) + ' kg', fg='red',font=police)
    tex1.grid(row=1,column=2)
     
     
    poidspartiel=str(poids-tare)
    tex2 = Label(fen1, text = poidspartiel+' kg', fg='red',font=police)
    tex2.grid(row=2,column=2)
     
     
     
     
     
    boutontare = Button(fen1, text='tare', command = tarage(),font=police)
    boutontare.grid(row=2,column=2)
     
     
    boutonvis1 = Button(fen1, text=nomvis1, command=commandevis1)
    boutonvis1.grid(row=1,column=4)
     
     
    boutonvis2 = Button(fen1, text=nomvis2, command=commandevis2)
    boutonvis2.grid(row=2,column=4)
     
    boutonvis3 = Button(fen1, text=nomvis3, command=commandevis3)
    boutonvis3.grid(row=3,column=4)
     
     
     
    if valeurvis1 :
        statutvis1='allumée'
    else:
        statutvis1=' éteinte'
     
    Label(fen1, text=statutvis1, fg='red',font=police).grid(row=1,column=5)
     
     
     
    if valeurvis2 :
        statutvis2=' allumée'
    else:
        statutvis2=' éteinte'
    Label(fen1, text=statutvis2, fg='red',font=police).grid(row=2,column=5)
     
    if valeurvis2:
        statutvis3=' allumée'
    else:
        statutvis3=' éteinte'
    Label(fen1, text=statutvis3, fg='red',font=police).grid(row=3,column=5)
     
    quit = Button(fen1, text='Quitter', command =fen1.destroy,font=police).grid(row=5,column=6)
     
     
     
    fen1.mainloop()
    Pour ce qui est de command = tarage() comme vous mettez () la fonction tarage est exécutée à la lecture du code. Celle ci ne retournant rien (None) vous avez en fait écrit command=None

    Pour la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    quit = Button(fen1, text='Quitter', command =fen1.destroy,font=police).grid(row=5,column=6)
    Déjà quit n'est pas très heureux comme nom (déjà utilisé), peut être btquit ?
    Mais en fait ici quit = None car grid retourne None.

    Votre souci:
    Ben... les conditions ne sont pas dans les fonctions...
    On pourrais écrire dans un premier temps
    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
    # -*- coding: cp1252 -*-
     
     
    from tkinter import *
     
    nomvis1 = "aliment1"
    nomvis2 = "aliment2"
    nomvis3 = "aliment3"
    police = "arial",50
    poids = 0
    valeurvis1 = 0
    valeurvis2 = 0
    valeurvis3 = 0
    tare = 0
    etatvis = ('éteinte', 'allumée')
     
    def commandevis1():
        "changer l'état de la vis 1"
        global valeurvis1
        if valeurvis1 == 0:
            valeurvis1 = 1
        else:
            valeurvis1 = 0
     
     
    def commandevis2():
        ""
        global valeurvis2
        if valeurvis2 == 0:
            valeurvis2 = 1
        else:
            valeurvis2 = 0
     
    def commandevis3():
        ""
        global valeurvis3
        if valeurvis3 == 0:
            valeurvis3 = 1
        else:
            valeurvis3 = 0
     
    def tarage():
        ""
        tare = poids
     
     
    fen1 = Tk()
    tex1 = Label(fen1, text=str(poids)+' kg', fg='red', font=police)
    tex1.grid(row=1, column=2)
    poidspartiel = str(poids-tare)
    tex2 = Label(fen1, text=poidspartiel+' kg', fg='red', font=police)
    tex2.grid(row=2, column=2)
    boutontare = Button(fen1, text='tare', command=tarage, font=police)
    boutontare.grid(row=2, column=2)
    boutonvis1 = Button(fen1, text=nomvis1, command=commandevis1)
    boutonvis1.grid(row=1, column=4)
    boutonvis2 = Button(fen1, text=nomvis2, command=commandevis2)
    boutonvis2.grid(row=2, column=4)
    boutonvis3 = Button(fen1, text=nomvis3, command=commandevis3)
    boutonvis3.grid(row=3, column=4)
    Label(fen1, text=etatvis[valeurvis1], fg='red', font=police).grid(row=1, column=5)
    Label(fen1, text=etatvis[valeurvis2], fg='red', font=police).grid(row=2, column=5)
    Label(fen1, text=etatvis[valeurvis3], fg='red', font=police).grid(row=3, column=5)
    Button(fen1, text='Quitter', command=fen1.destroy, font=police).grid(row=5, column=6)
    fen1.mainloop()
    Mais... Là il y a un gros souci
    Alors que vous nommez vos Button
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boutonvis3 = Button(fen1, text=nomvis3, command=commandevis3)
    vous ne le faite pas pour vos Label
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label(fen1, text=etatvis[valeurvis3], fg='red', font=police).grid(row=3, column=5)
    Comment en modifier le texte si vous ne savez pas de quel Label ?
    L'inverse est plus logique car pour les Button une fois command de renseigner pas besoin de référence, pour les Label par contre vous en avez besoin pour changer les texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Button(fen1, text='tare', command=tarage, font=police).grid(row=2, column=2)
    Button(fen1, text=nomvis1, command=commandevis1).grid(row=1, column=4)
    Button(fen1, text=nomvis2, command=commandevis2).grid(row=2, column=4)
    Button(fen1, text=nomvis3, command=commandevis3).grid(row=3, column=4)
    l1 = Label(fen1, text=etatvis[valeurvis1], fg='red', font=police)
    l1.grid(row=1, column=5)
    l2 = Label(fen1, text=etatvis[valeurvis2], fg='red', font=police)
    l2.grid(row=2, column=5)
    l3 = Label(fen1, text=etatvis[valeurvis3], fg='red', font=police)
    l3.grid(row=3, column=5)
    Et pour changer le texte on utilise Label.config
    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
    from tkinter import *
     
    nomvis1 = "aliment1"
    nomvis2 = "aliment2"
    nomvis3 = "aliment3"
    police = "arial",50
    poids = 0
    valeurvis1 = 0
    valeurvis2 = 0
    valeurvis3 = 0
    tare = 0
    etatvis = ('éteinte', 'allumée')
     
    def commandevis1():
        "changer l'état de la vis 1"
        global valeurvis1
        if valeurvis1 == 0:
            valeurvis1 = 1
        else:
            valeurvis1 = 0
        l1.config(text=etatvis[valeurvis1])
     
     
    def commandevis2():
        ""
        global valeurvis2
        if valeurvis2 == 0:
            valeurvis2 = 1
        else:
            valeurvis2 = 0
        l2.config(text=etatvis[valeurvis2])
     
    def commandevis3():
        ""
        global valeurvis3
        if valeurvis3 == 0:
            valeurvis3 = 1
        else:
            valeurvis3 = 0
        l3.config(text=etatvis[valeurvis3])
     
    def tarage():
        ""
        tare = poids
     
     
    fen1 = Tk()
    tex1 = Label(fen1, text=str(poids)+' kg', fg='red', font=police)
    tex1.grid(row=1, column=2)
    poidspartiel = str(poids-tare)
    tex2 = Label(fen1, text=poidspartiel+' kg', fg='red', font=police)
    tex2.grid(row=2, column=2)
    Button(fen1, text='tare', command=tarage, font=police).grid(row=2, column=2)
    Button(fen1, text=nomvis1, command=commandevis1).grid(row=1, column=4)
    Button(fen1, text=nomvis2, command=commandevis2).grid(row=2, column=4)
    Button(fen1, text=nomvis3, command=commandevis3).grid(row=3, column=4)
    l1 = Label(fen1, text=etatvis[valeurvis1], fg='red', font=police)
    l1.grid(row=1, column=5)
    l2 = Label(fen1, text=etatvis[valeurvis2], fg='red', font=police)
    l2.grid(row=2, column=5)
    l3 = Label(fen1, text=etatvis[valeurvis3], fg='red', font=police)
    l3.grid(row=3, column=5)
    Button(fen1, text='Quitter', command=fen1.destroy, font=police).grid(row=5, column=6)
    fen1.mainloop()
    Notes:
    Pour ce qui est de etatvis[valeurvisX] etatvis est un tuple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    etatvis = ('éteinte', 'allumée')
    et valeurvisX un int qui a pour valeur 0 ou 1
    Donc etatvis[valeurvisX] donne la valeur dans etatvis à l'index 0 ou 1.
    Voir les tuples pour plus d'information.

    Vous aurez sans doute remarquer le global dans le code.
    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
    >>> a = 1
    >>> def foo():
    ...     a = 2
    ...     print(a)
    ... 
    >>> foo()
    2
    >>> a
    1
    >>> def foo1():
    ...     global a
    ...     a = 3
    ... 
    >>> foo1()
    >>> a
    3
    Il est possible d'utiliser la classe Variable Tkinter avec le textvariable du Widget Label (Et de se passer ainsi de global). Vu le code je pense que c'est pour plus tard.

    Cela devrais suffire pour un 30 secondes

    @+

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Une variante sans le tuple
    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
    # -*- coding: UTF-8 -*-
     
     
    from tkinter import *
     
    poids = 0
    valeurvis1 = 0
    valeurvis2 = 0
    valeurvis3 = 0
    tare = 0
     
    def commandevis1():
        "changer l'état de la vis 1"
        global valeurvis1
        if valeurvis1 == 0:
            valeurvis1 = 1
            l1.config(text='allumée')
        else:
            valeurvis1 = 0
            l1.config(text='éteinte')
     
     
    def commandevis2():
        ""
        global valeurvis2
        if valeurvis2 == 0:
            valeurvis2 = 1
            l2.config(text='allumée')
        else:
            valeurvis1 = 0
            l2.config(text='éteinte')
     
    def commandevis3():
        ""
        global valeurvis3
        if valeurvis3 == 0:
            valeurvis3 = 1
            l3.config(text='allumée')
        else:
            valeurvis1 = 0
            l3.config(text='éteinte')
     
    def tarage():
        ""
        tare = poids
     
     
    fen1 = Tk()
    tex1 = Label(fen1, text=str(poids)+' kg', fg='red', font=("arial", 50))
    tex1.grid(row=1, column=2)
    poidspartiel = str(poids-tare)
    tex2 = Label(fen1, text=poidspartiel+' kg', fg='red', font=("arial", 50))
    tex2.grid(row=2, column=2)
    Button(fen1, text='tare', command=tarage, font=("arial", 50)).grid(row=2, column=2)
    Button(fen1, text="aliment1", command=commandevis1).grid(row=1, column=4)
    Button(fen1, text="aliment2", command=commandevis2).grid(row=2, column=4)
    Button(fen1, text="aliment3", command=commandevis3).grid(row=3, column=4)
    l1 = Label(fen1, text='éteinte', fg='red', font=("arial", 50))
    l1.grid(row=1, column=5)
    l2 = Label(fen1, text='éteinte', fg='red', font=("arial", 50))
    l2.grid(row=2, column=5)
    l3 = Label(fen1, text='éteinte', fg='red', font=("arial", 50))
    l3.grid(row=3, column=5)
    Button(fen1, text='Quitter', command=fen1.destroy, font=("arial", 50)).grid(row=5, column=6)
    fen1.mainloop()

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Et une autre variante, pour les méninges.
    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
    from tkinter import *
     
    poids = 0
    valeurvis1 = 0
    valeurvis2 = 0
    valeurvis3 = 0
    tare = 0
    widgetslst = []
     
    def commandevis(i):
        w = widgetslst[i-1]
        if w['text'] == 'éteinte':
            w.config(text='allumée')
        else:
            w.config(text='éteinte')
     
    def tarage():
        ""
        tare = poids
     
     
    fen1 = Tk()
    tex1 = Label(fen1, text=str(poids)+' kg', fg='red', font=("arial", 50))
    tex1.grid(row=1, column=2)
    poidspartiel = str(poids-tare)
    tex2 = Label(fen1, text=poidspartiel+' kg', fg='red', font=("arial", 50))
    tex2.grid(row=2, column=2)
    Button(fen1, text='tare', command=tarage, font=("arial", 50)).grid(row=2, column=2)
    for ind in range(1, 4):
        Button(fen1, text="aliment%d" % ind, command=lambda i=ind: commandevis(i)).grid(row=ind+1, column=4)
        l = Label(fen1, text='éteinte', fg='red', font=("arial", 50))
        l.grid(row=ind+1, column=5)
        widgetslst.append(l)
    Button(fen1, text='Quitter', command=fen1.destroy, font=("arial", 50)).grid(row=5, column=6)
    fen1.mainloop()
    @+

  5. #5
    Membre averti
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Par défaut Souci suivant...
    Merci beaucoup pour tes éclaircissements pausekawa ! Et bravo pour la réactivité!
    Par contre ton code ne fonctionnait pas tout le temps pour les boutons vis2 et vis3 (un seul allumé/éteindre puis ne fonctionne plus...)
    Je voyais tout ça un peu plus simple (sorti des programmes de la calculette au lycée !!!)
    Mais je vais pas me dégonfler, c'est pas mon genre. J'ai ré-écrit entièrement le script en utilisant des classes pour les atributs de vis (plus clair). Le script m'affiche les boutons(après au moins 3500 débogages ), mais pas les label. Je ne trouve pas l'erreur.

    HEEELP !!!

    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
     
     
     
     
     
    from tkinter import*
     
    class Etat:
        "etat des vis"
     
    vis1=Etat()
    vis1.marche=0
    vis1.nom="maïs"
     
     
    vis2=Etat()
    vis2.marche=0
    vis2.nom="soja"
     
    vis3=Etat()
    vis3.marche=0
    vis3.nom="Minéral"
     
    def switchvis(self):
        "changement d'état de la vis self"
        fen1.destroy
        if self.marche==0:
            self.marche=1
            mess="on"
        else:
            self.marche=0
            mess="off"
     
     
     
     
        if self==vis1 :
            indice1.configure(text=mess)
            fen1.destroy
        elif self==vis2:
            indice2.configure(text=mess)
     
        else:
            indice3.configure(text=mess)
     
     
    fen1=Tk()
     
    indice1=Label(fen1,text='off')
    indice1.grid(row =1, column =2)
     
    indice2=Label(fen1,text='off')
    indice2.grid(row =2, column =2)
     
    indice3=Label(fen1,text='off')
    indice3.grid(row =3, column =2)
     
    Button(fen1, text=vis1.nom , command=switchvis(vis1)).grid(row=1, column=2)
    Button(fen1, text=vis2.nom , command=switchvis(vis2)).grid(row=2, column=2)
    Button(fen1, text=vis3.nom , command=switchvis(vis3)).grid(row=3, column=2)
     
    fen1.mainloop()

  6. #6
    Membre averti
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Par défaut Bon langage de programmation ?
    A propos : python est-il le langage adapté à des programmes simples comme celui-là ?
    Es-ce un bon outil pour débuter et prendre les bonnes habitudes en programmation ?


    Vu mon niveau, je peux encore me pencher sur autre chose !

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par Farmer64 Voir le message
    Par contre ton code ne fonctionnait pas tout le temps pour les boutons vis2 et vis3 (un seul allumé/éteindre puis ne fonctionne plus...)
    Normal...
    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
    def commandevis2():
        ""
        global valeurvis2
        if valeurvis2 == 0:
            valeurvis2 = 1
            l2.config(text='allumée')
        else:
            valeurvis1 = 0
            l2.config(text='éteinte')
     
    def commandevis3():
        ""
        global valeurvis3
        if valeurvis3 == 0:
            valeurvis3 = 1
            l3.config(text='allumée')
        else:
            valeurvis1 = 0
            l3.config(text='éteinte')

    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
    def commandevis2():
        ""
        global valeurvis2
        if valeurvis2 == 0:
            valeurvis2 = 1
            l2.config(text='allumée')
        else:
            valeurvis2 = 0
            l2.config(text='éteinte')
     
    def commandevis3():
        ""
        global valeurvis3
        if valeurvis3 == 0:
            valeurvis3 = 1
            l3.config(text='allumée')
        else:
            valeurvis3 = 0
            l3.config(text='éteinte')
    Les dangers du cut/paste...

Discussions similaires

  1. Pop-up d'une dialog box a partir d'un bouton
    Par bobbyjack dans le forum MFC
    Réponses: 21
    Dernier message: 13/09/2005, 15h32
  2. redémarrer un prog à partir d'un bouton
    Par yokito dans le forum Langage
    Réponses: 5
    Dernier message: 06/09/2002, 13h19
  3. Réponses: 2
    Dernier message: 31/08/2002, 14h00
  4. Bmp pour boutons
    Par Fizgig dans le forum Outils
    Réponses: 5
    Dernier message: 22/08/2002, 10h56
  5. Afficher/Masquer un bouton comme IE 6
    Par benj63 dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/07/2002, 13h12

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