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 peut-on découper une ligne d'un grid() en plusieurs colonnes ?


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    licence pro
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : licence pro
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Comment peut-on découper une ligne d'un grid() en plusieurs colonnes ?
    Bonjour tout le monde! Je me familiarise avec Tkinter et je cherche à savoir comment je peux découper une row d'un grid en plusieurs column ? Je pense que c'est pas grand chose mais je ne suis pas un pro de tkinter encore !! Merci !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    "grid" permet de disposer des widgets sous la forme d'un tableau et les widgets ne se découpent pas: ce que vous demandez n'a pas trop de sens.

    Poster un exemple de ce que vous avez essayé pourra (peut être) mieux illustrer ce que vous cherchez à faire, le problème rencontré...


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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    licence pro
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : licence pro
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Salut, Merci de te réponse rapide ! En effet j'ai bien compris les principes du GRID() de Tkinter c'est pour cela que j'essaye de m'en servir car je pense que cela peut m'être utile.

    Voici du code. L'idée quand tu lances, tu cliques sur le bouton et ensuite les derniers labels que j'ai mis avec le "nom :" et le "____" je voudrais les mettre l'un à côté de l'autre sur cette même ligne, mais à gauche car je voudrais en mettre plusieurs comme cela sur cette même ligne si c'est possible..
    Merci de ton aide.






    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    def ShowFrameStocker(main_win,frame):
     
     
     
     
     
     
        delete_frame(main_win)
        frame.tkraise()
     
     
     
        ###############################################################################
        ## Creation d'un texte
        Text = Label(main_win, text="premier texte", fg='DodgerBlue4', font=("Helvetica", 16, "bold"), anchor="center")
        Text.grid()
     
     
        nb_of_columns = 2 # to be replaced by the relevant number
        Data= Label(main_win,text="data : ", fg='black', borderwidth=2, relief="groove" ,font=("Helvetica", 9, "italic","bold"),bg =_from_rgb((252, 252, 255)))
        Data.grid(row=1, sticky='we', columnspan=nb_of_columns, pady = 10) # sticky='ew' expands the label horizontally
     
     
     
     
        comboExample = ttk.Combobox(main_win,state="readonly", width = 70)
     
     
        comboExample.grid()
     
        comboExample.bind("<<ComboboxSelected>>", callbackFunc)
     
     
        #Label 
        DataMET = Label(main_win,text="Check data : ", fg='black', borderwidth=2, relief="groove" ,font=("Helvetica", 9, "italic","bold"),bg =_from_rgb((252, 252, 255)))
        DataMET.grid(row=3, sticky='we', columnspan=nb_of_columns, pady = 10) # sticky='ew' expands the label horizontally
     
     
        #Label
        Nom = Label(main_win,text="Nom : ")
        Nom.grid(column = 0, pady = 10) # sticky='ew' expands the label horizontally
    #    
        #Label
        NomValue = Label(main_win,text="_____",anchor=W)
        NomValue.grid(row= 4,column = 1, pady = 10) # sticky='ew' expands the label horizontally
     
     
     
     
     
     
     
    if __name__ == "__main__": 
     
        global main_win
        global first_frame
        global path
     
     
        path = os.path.dirname(os.path.realpath(__file__))
     
     
        main_win = Tk()
        main_win.configure(bg='lavender')
        main_win.title("toto")
        main_win.geometry("680x400")
     
     
     
     
        ###############################################################################
        ## Creation d'un frame pour la page d'accueil
        first_frame = Frame(main_win)
        first_frame.place(x=0, y=0, width=500, height=500)
        first_frame.grid(row=1, column=0)
     
    #    main_win.rowconfigure(6, weight=1)
        main_win.columnconfigure(0, weight=1)
     
     
     
     
        third_frame = Frame(main_win)
        third_frame.grid_forget()
     
     
    #    label_8 = Label(second_frame, text="Welcome to page 2",width=20,font=("bold", 10))
    #    label_8.place(x=70,y=230)
     
     
        ###############################################################################
        ## Creation d'un bouton suivant
        bouton_Stocker = Button(main_win, text='Cliquez ici', command=lambda:ShowFrameStocker(main_win,third_frame), height=3, width=20)
     
     
     
        bouton_Stocker.grid(row=4, column=0)
     
     
     
        lbl1 = Label(main_win, text="Test TKinter", fg='DodgerBlue4', font=("Helvetica", 16, "bold"))
        lbl1.grid(row=0, column=0)
     
     
     
     
     
     
     
        main_win.mainloop()

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par development_perso Voir le message
    L'idée quand tu lances, tu cliques sur le bouton et ensuite les derniers labels que j'ai mis avec le "nom :" et le "____" je voudrais les mettre l'un à côté de l'autre sur cette même ligne
    L'idée quand vous postez du code est qu'il soit "complet" pour reproduire le soucis constaté... et si possible minimal, histoire de montrer que vous avez essayé de comprendre le problème avant de "poster".

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    licence pro
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : licence pro
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Vous voulez les import en plus ? Désolé Je suis en train de coder dedans donc à part essayer des trucs... C'est tout ce que je fais ! Le code ci-dessus est la maquette de mon interface.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par development_perso Voir le message
    Vous voulez les import en plus ? Désolé Je suis en train de coder dedans donc à part essayer des trucs... C'est tout ce que je fais ! Le code ci-dessus est la maquette de mon interface.
    Malheureusement, il manque aussi des fonctions: et comme vous demandez de regarder ce que le code fait pour comprendre votre question...

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

  7. #7
    Futur Membre du Club
    Homme Profil pro
    licence pro
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : licence pro
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Ah oui effectivement je n'avais pas vu le def callbackFunc(), excusez moi!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def callbackFunc(event):
         print("New Element Selected")
         print(comboExample.get())

    c'est la seule fonction qu'il vous manque je crois bien. En tout cas elle me servira juste pour récupérer ce que je vais sélectionner dans ma Combobox Elle n'affecte pas le positionnement que je recherche de mes labels

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par development_perso Voir le message
    Ah oui effectivement je n'avais pas vu le def callbackFunc(), excusez moi!
    Il manque aussi (au moins) deletewin...
    Tester que le code que vous postez est fonctionnel, c'est pas compliqué non?

    Citation Envoyé par development_perso Voir le message
    Elle n'affecte pas le positionnement que je recherche de mes labels
    Tout à fait, c'est bien la raison pour laquelle je vous ai demandé de réduire votre code au minimum suffisant pour illustrer votre problème.

    Après c'est vous qui voyez mais si vous voulez de l'aide, il va falloir apprendre à aider ce qui voudraient bien vous aider car ils n'ont peut être pas que çà à faire.



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

  9. #9
    Futur Membre du Club
    Homme Profil pro
    licence pro
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : licence pro
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Ah oui.. C'est curieux car il a fonctionné chez moi. Je pense qu'il a du garder des trucs en mémoire car ca s'exécutait très bien chez moi, donc je ne m'en suis pas rendu compte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def delete_frame(main_win):
        for widget in main_win.winfo_children():
            widget.grid_forget() # Si vous utilisez .grid()

    Je pense que tout y est pour le coup!
    Excusez moi..

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par development_perso Voir le message
    Je pense que tout y est pour le coup!
    Arrêter de penser et vérifiez que le code que vous allez poster fonctionne et postez un code complet plutôt que de demander à ce qu'on fasse l'assemblage pour vous.

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

  11. #11
    Futur Membre du Club
    Homme Profil pro
    licence pro
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : licence pro
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Là j'ai redémarré mon ordi, tout fonctionne

    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    import os 
    from tkinter import * 
    import ttk
     
    def delete_frame(main_win):
        for widget in main_win.winfo_children():
            widget.grid_forget() # Si vous utilisez .grid()
     
     
    def callbackFunc(event):
         print("New Element Selected")
         print(comboExample.get())
     
    def _from_rgb(rgb):
        """translates an rgb tuple of int to a tkinter friendly color code
        """
        return "#%02x%02x%02x" % rgb 
     
     
    def ShowFrameStocker(main_win,frame):
        global comboExample
     
     
     
     
        delete_frame(main_win)
        frame.tkraise()
     
     
     
        ###############################################################################
        ## Creation d'un texte 
        textBLK = Label(main_win, text="premier texte", fg='DodgerBlue4', font=("Helvetica", 16, "bold"), anchor="center")
        textBLK.grid()
     
     
        nb_of_columns = 2 # to be replaced by the relevant number
        Data = Label(main_win,text="data : ", fg='black', borderwidth=2, relief="groove" ,font=("Helvetica", 9, "italic","bold"),bg =_from_rgb((252, 252, 255)))
        Data.grid(row=1, sticky='we', columnspan=nb_of_columns, pady = 10) # sticky='ew' expands the label horizontally
     
     
     
     
        comboExample = ttk.Combobox(main_win,state="readonly", width = 70)
     
     
        comboExample.grid()
     
     
        comboExample.bind("<<ComboboxSelected>>", callbackFunc)
     
     
        #Label 
        DataMET = Label(main_win,text="Check data : ", fg='black', borderwidth=2, relief="groove" ,font=("Helvetica", 9, "italic","bold"),bg =_from_rgb((252, 252, 255)))
        DataMET.grid(row=3, sticky='we', columnspan=nb_of_columns, pady = 10) # sticky='ew' expands the label horizontally
     
     
        #Label 
        Cable = Label(main_win,text="Nom : ")
        Cable.grid(sticky = "w", pady = 10) # sticky='ew' expands the label horizontally
    #    
        #Label 
        CableValue = Label(main_win,text="_____",anchor=W)
        CableValue.grid(row= 4,sticky = "e", pady = 10) # sticky='ew' expands the label horizontally
     
     
     
     
     
     
     
    if __name__ == "__main__": 
     
        global main_win
        global first_frame
        global path
     
     
        path = os.path.dirname(os.path.realpath(__file__))
     
     
        main_win = Tk()
        main_win.configure(bg='lavender')
        main_win.title("toto")
        main_win.geometry("680x400")
     
     
     
     
        ###############################################################################
        ## Creation d'un frame 
        first_frame = Frame(main_win)
        first_frame.place(x=0, y=0, width=500, height=500)
        first_frame.grid(row=1, column=0)
     
     
        main_win.columnconfigure(0, weight=1)
     
     
     
     
        third_frame = Frame(main_win)
        third_frame.grid_forget()
     
     
        ###############################################################################
        ## Creation d'un bouton
        bouton_Stocker = Button(main_win, text='Cliquez ici', command=lambda:ShowFrameStocker(main_win,third_frame), height=3, width=20)
     
     
     
        bouton_Stocker.grid(row=4, column=0)
     
     
     
        lbl1 = Label(main_win, text="Test TKinter", fg='DodgerBlue4', font=("Helvetica", 16, "bold"))
        lbl1.grid(row=0, column=0)
     
     
     
     
     
     
     
        main_win.mainloop()

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Ligne 3 "import ttk" va planter...
    Pour programmer, il faut de la rigueur...

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

  13. #13
    Futur Membre du Club
    Homme Profil pro
    licence pro
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : licence pro
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Pourquoi il va planter svp ? Je ne vois pas sincèrement
    C'est 2 lib "différentes", je me suis documenté et l'import est juste il me semble

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par development_perso Voir le message
    C'est 2 lib "différentes", je me suis documenté et l'import est juste il me semble
    Facile!
    Je lance Python et j'essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import ttk
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ImportError: No module named 'ttk'
    >>>
    Ce qui est cohérent avec ce que raconte la documentation Python.


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

  15. #15
    Futur Membre du Club
    Homme Profil pro
    licence pro
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : licence pro
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Alors là je suis un peu confus car je n'ai pas du tout cette erreur. Ce n'est pas que je ne veuille pas vous aider mais que puis-je faire ?

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par development_perso Voir le message
    Ce n'est pas que je ne veuille pas vous aider mais que puis-je faire ?
    Votre Python n'est plus standard.
    Et si vous ne savez pas pourquoi vous vous retrouvez dans cet état "non standard", vous n'êtes pas en mesure de savoir l'étendue des changements/dégâts. Et vous risquez d'avoir des problèmes originaux que personne ne saura reproduire chez lui (ou que vous découvrirez avec une mise à jour de Python ou un changement de machine).
    Dans ces conditions, la seule chose recommandable me parait être de réinstaller Python "proprement".

    Pour ce qui est de votre problème initial, de toutes façons, votre code montre un avant et on ne sait pas trop ce vous cherchez à obtenir après quelle action de l'utilisateur: peut être serait-il plus simple de "dessiner" le contenu des écrans avant et après ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/06/2007, 16h13
  2. [VB.NET] Comment peut-on sérialiser une Collection ?
    Par Jabbal'H dans le forum VB.NET
    Réponses: 6
    Dernier message: 09/03/2006, 21h24
  3. Comment faire pour ajouter une ligne seulement !
    Par Fredri dans le forum Access
    Réponses: 1
    Dernier message: 26/12/2005, 11h44
  4. Comment faire pour modifier une ligne dans une DBGrid?
    Par Nico62 dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2005, 12h24
  5. Comment peut-on dire : une bdd est petite, moyenne ou grosse
    Par Pierrinot dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 20/10/2004, 08h40

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