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 :

Comment faire pour créer des "Frame" en boucle


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étudie, code, publie des gammes)
    Inscrit en
    Janvier 2021
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étudie, code, publie des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2021
    Messages : 167
    Par défaut Comment faire pour créer des "Frame" en boucle
    Bonjour ☺


    J'ai deux types de fenêtres à afficher :


    1- La liste des toniques commatiques (12 éléments)
    -) Des éléments à développer diatoniquement

    2- La liste des modes diatoniques chromatisés (12 éléments)
    -) Même effet qu'un assemblage diatonique modal

    Le problème est que ce genre de développement produit des fenêtres,
    et que je ne sais comment produire des fenêtres en boucle,
    ni de comment m'assurer leurs archivage ou éviter leurs destruction.


    Comment faire pour créer des "Frame" en boucle ?

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 153
    Par défaut
    Bonjour,

    je ne sais comment produire des fenêtres en boucle
    Avec une boucle python ?

    comment m'assurer leurs archivage ou éviter leurs destruction
    archivage ? de ? Pour éviter la destruction, suffit de ne pas appeler la méthode permettant de détruire le widget (méthode destroy)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="https://www.developpez.net/forums/d2144649/autres-langages/python/gui/tkinter/faire-creer-frame-boucle/" target="_blank">Comment faire pour créer des "Frame" en boucle</a>
    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
     
    root = tk.Tk()
     
    for i in range(3):
        frame = tk.Frame(root)
        label = tk.Label(frame, text="Frame {}".format(i+1))
        label.pack()
        frame.pack()
     
     
    root.mainloop()

  3. #3
    Membre très actif
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étudie, code, publie des gammes)
    Inscrit en
    Janvier 2021
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étudie, code, publie des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2021
    Messages : 167
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Bonjour,
    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
     
    root = tk.Tk()
     
    for i in range(3):
        frame = tk.Frame(root)
        label = tk.Label(frame, text="Frame {}".format(i+1))
        label.pack()
        frame.pack()
     
     
    root.mainloop()
    Essai ☺

    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
     
     
    from tkinter import *
     
    noms = ['ok', 'yes', 'non']
     
    def invente():
        table = Toplevel()
        table.title('Entités Commatiques du Chromatisme')
        table.geometry('900x900+150+100')
        for i in noms:
            i = Frame(table, bg='Ivory', height=30, width=30 )
            i.pack()
     
    if __name__ == "__main__":
        invente()
    Avec cet essai je démontre que je veux créer des Frame's grâce à la liste noms , ça marche à moitié

  4. #4
    Membre très actif
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étudie, code, publie des gammes)
    Inscrit en
    Janvier 2021
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étudie, code, publie des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2021
    Messages : 167
    Par défaut
    L'essai précédent ne me donne rien, alors je change la nature de la fenêtre qui n'est plus (Frame), mais (Toplevel).

    Ça marche mieux, sauf qu'une fenêtre (tk) s'affiche et elle n'est pas demandée dans le code qui suit.

    Les Toplevel's s'affichent indépendamment, et leurs titres laissent à désirer.

    Python ne détecte aucune erreur ☺

    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
    # Python3'''Ou'''  # Créer des frames en boucle
    from tkinter import *
     
    table = Toplevel()
    table.title('Entités Commatiques du Chromatisme')
    table.geometry('900x900+150+80')
     
    noms = ['ok', 'yes', 'non']
    bout = ['1', '2', '3']
     
     
    def affiche(x):
        print(x)
     
     
    def invente():
        for ion in range(len(noms)):
            noms[ion] = Toplevel(table, bg='Ivory', height=30, width=30 )
            noms[ion].title(noms[ion])
     
        for ion in range(len(noms)):
            bout[ion] = Button(noms[ion], text=bout[ion], height=1, width=30, command=lambda m=noms[ion]: affiche(m))
            bout[ion].pack()
     
     
    if __name__ == "__main__":
        invente()

  5. #5
    Membre très actif
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étudie, code, publie des gammes)
    Inscrit en
    Janvier 2021
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étudie, code, publie des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2021
    Messages : 167
    Par défaut
    J'ai finalement trouvé une solution pour créer autant de fenêtres qu'on veut, pour les utiliser quand on veut

    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
     
    # Python3
    '''Ou'''  # Créer des frames en boucle
     
     
    from tkinter import *
     
     
    table = Canvas()
    table.pack()
    # table.title('Entités Commatiques du Chromatisme')
    # table.geometry('500x500+150+80')
     
     
    noms = ['ok', 'yes', 'non']
    bout = ['1', '2', '3']
     
     
    def affiche(x):
        x.deiconify()
     
     
    for ion in range(len(noms)):
        noms[ion] = Toplevel(table , bg='Ivory', height=30, width=30 )
        noms[ion].title(noms[ion])
        noms[ion].geometry('100x300+100+100')
        noms[ion].iconify()
     
     
    for ion in range(len(noms)):
        bout[ion] = Button(table, text=bout[ion], height=1, width=30, command=lambda m=noms[ion]: affiche(m))
        bout[ion].pack()
     
     
     
     
    if __name__ == "__main__":
        mainloop()

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 153
    Par défaut
    Citation Envoyé par toumic2.0 Voir le message
    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
     
    # Python3
    '''Ou'''  # Créer des frames en boucle
     
     
    from tkinter import *
     
     
    table = Canvas()
    table.pack()
    # table.title('Entités Commatiques du Chromatisme')
    # table.geometry('500x500+150+80')
     
     
    noms = ['ok', 'yes', 'non']
    bout = ['1', '2', '3']
     
     
    def affiche(x):
        x.deiconify()
     
     
    for ion in range(len(noms)):
        noms[ion] = Toplevel(table , bg='Ivory', height=30, width=30 )
        noms[ion].title(noms[ion])
        noms[ion].geometry('100x300+100+100')
        noms[ion].iconify()
     
     
    for ion in range(len(noms)):
        bout[ion] = Button(table, text=bout[ion], height=1, width=30, command=lambda m=noms[ion]: affiche(m))
        bout[ion].pack()
     
     
     
     
    if __name__ == "__main__":
        mainloop()
    Pourquoi tu ne mets pas ces deux lignes dans ton 1er bloc de ta boucle for ?

    bout[ion] = Button(table, text=bout[ion], height=1, width=30, command=lambda m=noms[ion]: affiche(m))
    bout[ion].pack()

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/03/2017, 13h35
  2. [Débutant] comment faire pour Créer des marqueurs dans Google Maps en c#
    Par dabi29 dans le forum C#
    Réponses: 5
    Dernier message: 25/01/2016, 23h22
  3. Réponses: 6
    Dernier message: 13/12/2011, 20h54
  4. [MySQL] comment faire pour créer table et formulaire pour saisie des donnes GPS avec images
    Par kitcarson23 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 07/09/2010, 10h09
  5. Réponses: 2
    Dernier message: 10/06/2010, 10h10

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