Partage

Tkinter | Page

14 mars 2018 à 15:42:57

Bonjour, je fait appelle à vous car je n'ai pas su trouver les réponses.

Je cherche à "nettoyer" la fenêtre tkinter et y rajouter des widgets par la suite, auriez-vous une idée ?

Vous êtes demandeur·se d'emploi ?
Sans diplôme post-bac ?

Devenez Développeur·se web junior

Je postule
Formation
courte
Financée
à 100%
14 mars 2018 à 17:52:15

Salut,

Pour nettoyer une fenêtre,vous avez trois méthodes

# Méthode #1

Si vous avez des widgets, il suffit de les enlever, en les oubliant.

À l'aide de:

  • pack_forget() # Si vous utilisez pack()
  • grid_forget() # Si vous utiliser grid()
  • ...

# Méthode #2

Si vous avez un canva, et que vous voulez nettoyez ce canva, il suffit de faire: .

  • delete('all') # Pour tout supprimer les ITEMS dans le canva.
  • delete(id_item) # Pour supprimer qu'un item choisit, selon son ID

# Méthode #3

Sinon, vous pouvez très bien, créer des frames un par dessus l'autre. Chaque frame aurait ces propres widgets. Ensuite, il suffit d'utiliser tkraise(), pour mettre un frame en avant-plan.

PS: Vous avez tous les mot clefs, pour continuer. Regardez et lisez la documentation, elle sera utile.

N'hésitez pas pour les questions.

Bonne chance

A+

14 mars 2018 à 21:02:37

Merci beaucoup, mais je viens de me rendre compte que Tkinter est beaucoup trop limité pour le projet que j'envisage, j'ai donc opté pour pygame. Cependant j'ai refait une dizaine de recherches mais toujours aucunes infos viables sur "nettoyer" la page de la fenetre.  Si quelqu'un serait me diriger, je suis preneur. Admet-on que je veux enlever 2 labels. Comment procéder ?

-
Edité par AXT1 14 mars 2018 à 21:04:40

16 mars 2018 à 16:52:43

Salut,

Vous voulez enlever deux labels, je présume donc, que vous parlez de Tkinter...

Voici deux exemples.

## Exemple #1 (Des labels)

import tkinter as tk

fenetre = tk.Tk()

## Labels Premier
labelA = tk.Label(fenetre, text='LabelA')
labelA.pack()
labelB = tk.Label(fenetre, text='LabelB')
labelB.pack()

## Labels Deuxième
labelC = tk.Label(fenetre, text='LabelC')
labelD = tk.Label(fenetre, text='LabelD')


def remove_labels():
    labelA.pack_forget()
    labelB.pack_forget()
    labelC.pack()
    labelD.pack()

    ## Puisque l'on utilise .pack(), le bouton sera au début
    ## Pour le remettre comme il était (en bas des labels)
    ## On l'oublie et/ou le replace, selon votre choix.
    bouton.pack_forget()
    #bouton.pack()
    
bouton = tk.Button(fenetre, text='Appuyez', command=remove_labels)
bouton.pack()

fenetre.mainloop()

## Exemple #2 (Des frames)

import tkinter as tk

fenetre = tk.Tk()

## Frame A et ces widgets
frameA = tk.Frame(fenetre)
frameA.pack() ## Positionnement du frame A
labelA = tk.Label(frameA, text='LabelA')
labelA.pack()
labelB = tk.Label(frameA, text='LabelB')
labelB.pack()

## Frame B et ces widgets (pas de positionnement du frame B)
frameB = tk.Frame(fenetre)
labelC = tk.Label(frameB, text='LabelC')
labelC.pack()
labelD = tk.Label(frameB, text='LabelD')
labelD.pack()

def remove_labels():
    frameA.pack_forget() ## Enlève
    frameB.pack() ## Ajoute

    ## Puisque l'on utilise .pack(), le bouton sera au début
    ## Pour le remettre comme il était (en bas des labels)
    ## On l'oublie et le replace.
    bouton.pack_forget()
    bouton.pack()
    
bouton = tk.Button(fenetre, text='Appuyez', command=remove_labels)
bouton.pack()

fenetre.mainloop()

Dans les deux exemples, lorsque l'on oublie des widgets (.pack_forget()), les widgets qui restent ce placeront en premier. Donc, ici, le bouton se positionnera au début.

Pour le remettre à la fin (en bas des labels), on l'oublie et le repositionne. (Comme l'Exemple #2)

Si c'est exemple, ne sont pas utiles, essayez de nous donner un bout de code, pour que l'on crée un exemple qui fonctionnera selon vos besoins. Sinon, c'est dure d'essayer de vous aider, sans code.

Bonne chance

A+

Tkinter | Page

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown