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 :

checkButton passe au mode disable en .EXE


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 6
    Par défaut checkButton passe au mode disable en .EXE
    J'utilise Python 3.6 sur Spyder, et je suis entrain de programmer une interface avec Tkinter. J'ai implémenté des boutons CheckButton, et quand je lance l’exécution sur Spyder, tout marche bien. Mais après la génération de l’exécutable .exe avec Cx-freeze les CheckButton ne marchent plus, et passent en mode disable. J'ai réalisé un petit code illustrant ma situation.


    Code de mon interface:
    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
    import tkinter as tk
    root=tk.Tk()
    frame = tk.LabelFrame(root,text="Fichiers excel", padx=5, pady=20)
    frame.grid(row=0,sticky='nesw')
    cbVar=tk.StringVar()
     
    def fct():
        if cbVar.get() =='':
            cbVar.set('salut')
        else:
            cbVar.set('')
        print(cbVar.get())
    cb  = tk.Checkbutton(frame, text="cb",variable=cbVar,command=fct,state=tk.NORMAL)
    cb.grid(row=0,column=0)
    root.mainloop()
    Code du setup.py:
    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
    import cx_Freeze
    import sys
    import os.path
    PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
    os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
    os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')
    base = None
     
    if sys.platform == 'win32':
        base = "Win32GUI"
     
    executables = [cx_Freeze.Executable("debug.py", base=base)]
    cx_Freeze.setup(
        name = "test",
        options = {"build_exe": {"packages":["tkinter"]}},
        version = "0.01",
        description = "test",
        executables = executables
        )

  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,

    Je ne vois pas trop ce que vous entendez par "mode disable".
    Par contre le callback:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def fct():
        if cbVar.get() =='':
            cbVar.set('salut')
        else:
            cbVar.set('')
        print(cbVar.get())
    Comme vous n'avez pas précisé de onvalue/offvalue, par défaut ce sera '0' ou '1' (et non ce que vous avez codé).

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

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Je ne vois pas trop ce que vous entendez par "mode disable".
    Par contre le callback:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def fct():
        if cbVar.get() =='':
            cbVar.set('salut')
        else:
            cbVar.set('')
        print(cbVar.get())
    Comme vous n'avez pas précisé de onvalue/offvalue, par défaut ce sera '0' ou '1' (et non ce que vous avez codé).

    - W

    En vérité le Onvalue, et le Offvalue n'ont pas marché pour moi en début,c'est pour ça je suis passé à la méthode command. Mais maintenant magiquement ça a marché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c = tk.Checkbutton(frame, text="test", variable=cbVar,onvalue="salut",offvalue="",command=lambda x=cbVar:print(cbVar.get()))
    Merci pour votre aide.

  4. #4
    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
    Citation Envoyé par elfantroussiO Voir le message
    Mais maintenant magiquement ça a marché.
    Le comportement documenté traduit l’effort de dizaines d'humains pour faire que çà fonctionne comme çà... Il n'y a rien de magique, juste beaucoup de boulot (qu'il faut essayer de comprendre pour en tirer profit).

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

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Le comportement documenté traduit l’effort de dizaines d'humains pour faire que çà fonctionne comme çà... Il n'y a rien de magique, juste beaucoup de boulot (qu'il faut essayer de comprendre pour en tirer profit).

    - W
    En effet sur la console Ipython ça marche pas avec le On/Off value . Vous pouvez le tester, ça reste toujours dans le OffValue. Par contre, c'est l'opposé sur l'anaconda Prompt. Avec la première solution que j'avais fais ça ne marche pas, mais avec le On/Off value ça marche. C'est ce qui m'a poussé à dire magiquement. Je ne sais pas vraiment c'est quoi la différence entre la console Ipython et les autres consoles.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Startup Mode (JVM, JAVA, EXE) ?
    Par NeoGeoo dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 02/06/2010, 16h20
  2. CSS pour ne pas griser les bouton radio en mode 'disabled'
    Par niko73 dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 16/01/2009, 10h05
  3. Passé du mode plein écran au mode fenetré
    Par kitue dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 25/04/2008, 17h29
  4. [IE7] passe en mode vista basic
    Par jolemoine dans le forum Windows Vista
    Réponses: 2
    Dernier message: 14/05/2007, 00h07
  5. Probleme avec BCB qui passe en mode debug cpu
    Par blondelle dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/04/2007, 19h54

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