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 :

faire un lien entre fichiers python avec bouton tkinter [Python 3.X]


Sujet :

Python

  1. #1
    Membre � l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2021
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : Espagne

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2021
    Messages : 5
    Par d�faut faire un lien entre fichiers python avec bouton tkinter
    Salut a tous et merci d�avance ; �a fait plus de deux semaines que je suis coinc� pour r�soudre un probl�me de mon projet interface tkinter�j�ai deux fichiers python, le premier nomm�(fichier_test7) et le deuxi�me nomm�(fichier_tests), quand j�execute sur pycharm le code du fichier_test7 �a marche tres bien( quand je coche les boutons a cocher la valeur est modifi� en 1, la meme chose pour la valeur entry et spinbox) :
    Run affiche �a :
    la valeur de chkbutton 1 est: 1
    la valeur de chkbutton 2 est: 0
    la valeur de chkbutton 3 est: 1
    la valeur de chkbutton 4 est: 0
    la valeur de entry1 est: prend
    la valeur de entry5 est: s
    la valeur de entry11 est: poisson
    la valeur de spinbox1 est: 3
    Mais quand j�ouvre le fichier_test7 a partir de l�interface fichier_tests en cliquant sur un bouton nomm� test7 les valeurs de checkbouton et Entry et spinbox ne change pas meme je coche et je fais entrer des mots et je valide par bouton valider rien ne change :
    Run affiche :
    la valeur de chkbutton 1 est: 0
    la valeur de chkbutton 2 est: 0
    la valeur de chkbutton 3 est: 0
    la valeur de chkbutton 4 est: 0
    la valeur de entry1 est:
    la valeur de entry5 est:
    la valeur de entry11 est:
    la valeur de spinbox1 est: 0
    voici un extrait de code du fichier_tests :
    j�ai essay� ce code 1 (n�affiche pas d�erreur):
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    def ouvrir_fichier_test7():
        import fichier_test7[/B]
    le programme affiche toujors le message info[if ((val_chk1== 0  and val_chk2== 0 and val_chk3== 0 and val_chk4== 0) or (val_entry1=="" and val_entry2=="" and val_entry3=="" and val_entry4=="")or (val_entry5=="" and val_entry6=="" and val_entry7=="" and val_entry8=="" and val_entry9=="" and val_entry10=="") or (val_entry11=="" and val_entry12=="" and val_entry13=="" and val_entry14=="" and val_entry15=="") or (val_spinbox1 ==1 and val_spinbox2==1 and val_spinbox3==1)):
           showinfo("Important!","Tu dois répondre au moins une partie de question de chaque matière(Grammaire, Conjugaison...)")
    et avec le code 2 :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    def ouvrir_fichier_test7():
        fich = exec(io.open_code("fichier_test7.py").read())
    affiche l�erreur suivante :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    line 1884, in __call__
        return self.func(*args)
      File "<string>", line 59, in valider_test7
    NameError: name 'CheckValue1' is not defined
    le code du bouton valider :
    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
    def valider_test7():
     
        val_chk1 = CheckValue1.get()
        print("la valeur de chkbutton 1 est:",val_chk1)
        val_chk2 = CheckValue2.get()
        print("la valeur de chkbutton 2 est:", val_chk2)
        val_chk3 = CheckValue3.get()
        print("la valeur de chkbutton 3 est:", val_chk3)
        val_chk4 = CheckValue4.get()
        print("la valeur de chkbutton 4 est:", val_chk4)
        val_entry1 = value_entry_conjug1.get()
        print("la valeur de entry1 est:", val_entry1)
        val_entry2 = value_entry_conjug2.get()
        val_entry3 = value_entry_conjug3.get()
        val_entry4 = value_entry_conjug4.get()
        val_entry5 = value_entry_orthog5.get()
        print("la valeur de entry5 est:", val_entry5)
        val_entry6 = value_entry_orthog6.get()
        val_entry7 = value_entry_orthog7.get()
        val_entry8 = value_entry_orthog8.get()
        val_entry9 = value_entry_orthog9.get()
        val_entry10 = value_entry_orthog10.get()
        val_entry11 = value_entry_dict11.get()
        print("la valeur de entry11 est:", val_entry11)
        val_entry12 = value_entry_dict12.get()
        val_entry13 = value_entry_dict13.get()
        val_entry14 = value_entry_dict14.get()
        val_entry15 = value_entry_dict15.get()
        val_spinbox1 = value_spinbox1.get()
        print("la valeur de spinbox1 est:", val_spinbox1)
        val_spinbox2 = value_spinbox2.get()
        val_spinbox3 = value_spinbox3.get()
     
        if ((val_chk1== 0  and val_chk2== 0 and val_chk3== 0 and val_chk4== 0) or (val_entry1=="" and val_entry2=="" and val_entry3=="" and val_entry4=="")or (val_entry5=="" and val_entry6=="" and val_entry7=="" and val_entry8=="" and val_entry9=="" and val_entry10=="") or (val_entry11=="" and val_entry12=="" and val_entry13=="" and val_entry14=="" and val_entry15=="") or (val_spinbox1 ==1 and val_spinbox2==1 and val_spinbox3==1)):
           showinfo("Important!","Tu dois répondre au moins une partie de question de chaque matière(Grammaire, Conjugaison...)")
     
        else:

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

    Citation Envoy� par JuanGavira Voir le message
    Salut a tous et merci d�avance ; �a fait plus de deux semaines que je suis coinc� pour r�soudre un probl�me de mon projet interface tkinter�
    En 2 semaines, vous auriez pu/du r�duire vos codes � un exemple minimal qui permette de reproduire le probl�me simplement.

    �� a plusieurs avantages.

    Le premier est de pouvoir poster quelque chose qui permette de reproduire votre soucis sans avoir � fournir des extraits de code et des explications "techniques" incompr�hensibles.

    Le second est qu'avant de poster vous auriez pu travailler sur cet exemple plus simple par vous m�me et peut �tre trouver une solution.

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

  3. #3
    Membre � l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2021
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : Espagne

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2021
    Messages : 5
    Par d�faut voici le code reduit
    Merci pour ton conseil je suis debutant en python et j'ai pas pens� a reduire le code car j'ai cru que le message etait clair. voici le code reduit:
    fichier 1 test7reduit:
    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
    # coding: utf-8
    from tkinter import *
    from tkinter.messagebox import *
    fenetre_test7 = Tk()
    checkvalue1 = IntVar()
    checkvalue2 = IntVar()
     
    def valider_test7():
        val_chk1 = checkvalue1.get()
        val_chk2 = checkvalue2.get()
        print("la valeur de chkbutton 1 est:", val_chk1)
        print("la valeur de chkbutton 2 est:", val_chk2)
        if (val_chk1 == 0 and val_chk2 == 0):
            showinfo("Important!", "Fais ton choix!")
        else:
     
            if val_chk1 == 1 and val_chk2 == 0:
                print("juste")
            elif (val_chk1 == 0 and val_chk2 ==1) or (val_chk1 ==1 and val_chk2 ==1):
                print("faux")
     
    def fermer_fichier_test7():
        fenetre_test7.quit()
     
    label_test7 = Label(fenetre_test7, text="-Test 7", font=("Courrier", 30), fg='black', bg='#e78ee8')
    label_test7.grid(row=0, column=0, pady=2)
    # label de grammaire:
    label_gram = Label(fenetre_test7, text="I-Grammaire:", font=("Courrier", 20), fg='black', relief=RAISED)
    label_gram.grid(row=1, column=0, pady=2, padx=12, sticky=W)
    # Label question Grammaire:
    label_question_gram = Label(fenetre_test7, text="-Coche la case qui correspond à la phrase exclamative:",
                                font=("Cursif", 20), fg='black', bg='#e78ee8')
    label_question_gram.grid(row=2, column=0, pady=2, padx=12, sticky=W)
     
    # Les checkbutons de Grammaire:
     
    chkbuton1_gram = Checkbutton(fenetre_test7, text="a-Quelle délicieuse pomme!", font=("Courrier", 15), fg='black',
                                 bg='#e78ee8', selectcolor='white', variable=checkvalue1,
                                 onvalue=1, offvalue=0, height=1, width=25, padx=3)
    chkbuton1_gram.grid(row=3, column=0, pady=2, sticky=W)
     
    chkbuton2_gram = Checkbutton(fenetre_test7, text="b-L'agriculteur sème le blé.", font=("Courrier", 15), fg='black',
                                 bg='#e78ee8', selectcolor='white', variable=checkvalue2,
                                 onvalue=1, offvalue=0, height=1, width=25, padx=1)
    chkbuton2_gram.grid(row=4, column=0, pady=2, sticky=W)
     
    #Button Valider:
     
    button_valider_test7= Button(fenetre_test7, text= "Valider",
                        font=("Courrier", 30),bg='#e78ee8',
                         fg='purple',command=valider_test7)
    button_valider_test7.grid(row =30, column=0, pady=50,padx= 300, sticky= W)
     
    #Button Fermer Test7:
    button_fermer_test7= Button(fenetre_test7, text= "Fermer",
                        font=("Courrier", 30),bg='#e78ee8',
                         fg='purple',command=fermer_fichier_test7)
    button_fermer_test7.grid(row =30, column=0, pady=50,padx= 550, sticky= W)
     
    fenetre_test7.mainloop()

    le code de fichier 2 testsreduit:
    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
    # coding: utf-8
    from tkinter import *
    import io
     
    def fermer_fichier_tests():
        fenetre_tests.quit()
     
     
    def ouvrir_fichier_test7():
        import test7reduit
        #fich = exec(io.open_code("test7reduit.py").read())
     
    # créer une première fenêtre:
    fenetre_tests = Tk()
     
    # personnaliser cette fenêtre:
    fenetre_tests.title("Tests")
    fenetre_tests.geometry("250x200")
     
    fenetre_tests.config(background='#e78ee8')
     
    #Créer button test 7:
    button_test7= Button(fenetre_tests, text= "Test 7",
                        font=("Courrier", 15),bg='#e78ee8',
                         fg='purple',command =ouvrir_fichier_test7)
    button_test7.grid(row=6, column=1,padx= 20,pady= 10)
    button_fermer_fen_tests =Button(fenetre_tests, text="Fermer", font=("Courrier", 15), bg='#e78ee8', fg='blue', command=fermer_fichier_tests)
    #button_fermer_fenetre_tests
    button_fermer_fen_tests.grid(row=10, column=2,padx= 20, pady= 10)
     
    # Afficher cette fenêtre:
    fenetre_tests.mainloop()
    Merci encore

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

    Beaucoup de lignes et pas la balise code pour qu'on puisse lire? Ca va pas vous aider.

    R�duisez encore:
    fichier1.py:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    from tkinter import *
    Tk()
    mainloop()
    puis dans le fichier "principal":
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    import fichier1
    print ('hello')
    A priori vous devriez constater que le "hello" ne s'affiche pas (mainloop() est "bloquant") tant que vous ne fermez pas la fen�tre (pour d�bloquer).

    Pour le reste, ben, si vous n'avez pas pris le temps d'ouvrir un tuto. et de tester que vos constructions fonctionnent dans des cas simples (comme le mien, c'est pas compliqu�), c'est que vous avez �crit des trucs en esp�rant que �� fonctionne (sans m�me les tester).

    Ben �� ne fonctionne pas comme ��... et je ne peux pas vous dire grand chose de plus (il y a plein de chapitres dans les tutos que vous sembl� avoir zapp�...).

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

  5. #5
    Membre � l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2021
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : Espagne

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2021
    Messages : 5
    Par d�faut le meme probl�me
    Salut � tous, j'ai r�duit le code pour qu'il soit compr�hensible et pour copier coller et savoir le probl�me que je rencontre quand j�ai fini de cr�er le fichier test1, avec exec et import le programme ne fonctionne pas, mais quand j�ex�cute le fichier nomm� test1 tout seul fonctionne parfaitement(quand je coche la r�ponse �a marche), mais quand j�essaye de l�ouvrir � partir du fichier nomm� tests il y a des erreurs :

    Le code du fichier test1 :
    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
    # coding: utf-8
    from tkinter import *
    from tkinter.messagebox import *
     
    fenetre_test1 = Tk()
    fenetre_test1.title("Coche la phrase exclamative")
    fenetre_test1.minsize(400, 150)
    checkvalue1 = IntVar()
    checkvalue2 = IntVar()
     
     
    chkbuton1_gram = Checkbutton(fenetre_test1, text="a-Quelle délicieuse pomme!", variable = checkvalue1,
                                 onvalue=1, offvalue=0, height=1, width=25, padx=3)
    chkbuton1_gram.grid(row=3, column=0, pady=2, sticky=W)
     
    chkbuton2_gram = Checkbutton(fenetre_test1, text="b-L'agriculteur sème le blé.", variable = checkvalue2,
                                 onvalue=1, offvalue=0, height=1, width=25, padx=1)
    chkbuton2_gram.grid(row=4, column=0, pady=2, sticky=W)
    def valider_test1():
        print("la valeur de chkbutton 1 est:", checkvalue1.get())
        print("la valeur de chkbutton 2 est:", checkvalue2.get())
     
        if checkvalue1.get() == 0 and checkvalue2.get() == 0:
            showinfo("Important!", "Fais ton choix!")
        else:
     
            if checkvalue1.get() == 1 and checkvalue2.get() == 0:
                print("juste")
            elif (checkvalue1.get() == 0 and checkvalue2.get() == 1) or (checkvalue1.get() == 1 and checkvalue2.get() == 1):
                print("faux")
     
    # Button Valider:
     
    button_valider_test1 = Button(fenetre_test1, text="Valider", command=valider_test1)
    button_valider_test1.grid(row =30, column=0, sticky= W)
    fenetre_test1.mainloop()
    Le code du fichier tests :

    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
    # coding: utf-8
    from tkinter import *
    #from tkinter import *
    import io
    fenetre_tests = Tk()
    def ouvrir_fichier_test1():
       fich = exec(io.open_code("test7reduit.py").read())
       #import test7reduit
       #test7reduit.valider_test1()
     
     
     
    button_test1= Button(fenetre_tests, text="Test 1",
                          command =ouvrir_fichier_test1)
    button_test1.grid(row=6, column=1, padx= 20, pady= 10)
    fenetre_tests.mainloop()

    Avec (import) le message info : Fais ton choix ne cesse d� apparaitre ;
    Avec (exec�) il y a des erreurs(Exception in Tkinter callback
    Traceback (most recent call last): return self.func(*args)
    File "<string>", line 20, in valider_test1
    NameError: name 'checkvalue1' is not defined)

    Alors quoi faire ? merci d�avance

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

    Citation Envoy� par JuanGavira Voir le message
    Alors quoi faire ? merci d�avance
    Vous d�butez.

    Vous devez apprendre ce qu'est un "module" Python et comment l'ex�cuter en tant que script.

    Ce qui vous force � �crire dans le module des fonctions � appeler lorsqu'il sera import� (ce qui interdit l'usage d'exec dans ce cas).

    L'autre difficult� est que vous programmez avec tkinter.

    Par d�faut, il n'y a qu'une seule instance de Tk (les autres fen�tres �tant cr��es via Toplevel) et � priori un seul appel � .mainloop() dans votre programme (quelque soit le nombre de modules).

    Et, in fine, tout un travail de conception pour remettre tout �� � une sauce Python et tkinter plus orthodoxe.

    Bien s�r, ce n'est que de la programmation et on pourrait tr�s bien faire fonctionner le code que vous �tes parti � coder.

    Mais, vous ne ma�triserez rien donc � la prochaine difficult�, pas grand monde voudra regarder ce qu'il se passe.

    Soit vous avez besoin d'utiliser de telles fonctionnalit�s avanc�es, extra-ordinaire et vous n'�tes plus d�butant car vous savez pourquoi vous devez le faire ainsi plut�t que de fa�on plus conventionnelle.

    Soit vous vous lancez l� dedans par ignorance de comment faire "proprement" faute d'avoir pris le temps d'apprendre (en ouvrant des tutos)...

    Quand c'est juste un probl�me de compr�hension qui se r�soud en quelques explications et quelques lignes de code, on peut vous aider mais si au d�part vous n'avez m�me pas essay� de comprendre... � part tout recoder � votre place, on ne peut pas faire grand chose (les explications sont d�j� dans les tutos que vous avez visiblement zapp�s ou choisi de tr�s mauvais).

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

  7. #7
    Membre � l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2021
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : Espagne

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2021
    Messages : 5
    Par d�faut ok
    salut; merci pour votre r�ponse, tout d'abord j'ai appris quelques notions en python sur youtube et en particulier Tkinter pour programmer une petite application aux �l�ves de primaire en basant sur ma connaissance du pass� (2002) en Visual Basic mais je vais lire sur les modules... en esp�rant r�soudre mon probl�me car je veux pas perdre beaucoup de temps que je consacre � �crire des romans et d'autres types de livres...merci encore pout tes conseils.

  8. #8
    Membre � l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2021
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : Espagne

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2021
    Messages : 5
    Par d�faut Enfin
    Salut, enfin j'ai compris l'erreur que j'ai commise, maintenant l'application va bien merci pour tes remarques j'ai du utiliser une seule fenetre Tk() et plusieurs Toplevel(), maintenant j'ai r�solu ce probl�me grace � toi; merci encore et � plutard.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 0
    Dernier message: 30/06/2010, 16h27
  2. [WD12] Lien entre fichiers sur etat avec requete integree
    Par L.Lemarchand dans le forum WinDev
    R�ponses: 3
    Dernier message: 01/08/2008, 13h45
  3. R�ponses: 3
    Dernier message: 20/06/2008, 16h37
  4. creer des liens entre les feuilles avec un bouton
    Par tomy7 dans le forum Macros et VBA Excel
    R�ponses: 6
    Dernier message: 12/03/2008, 13h31
  5. Faire le lien entre un fichier excel et BO
    Par PlisNuX dans le forum Deski
    R�ponses: 1
    Dernier message: 29/05/2007, 13h33

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