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 :

Tkinter Ajout de photos en .PPM


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2021
    Messages : 10
    Par défaut Tkinter Ajout de photos en .PPM
    Bonjour à tous,

    Comme souligné dans l'intitulé de la conversation, je suis actuellement à la recherche d'une âme bienveillante pour m'aider sur un problème que je rencontre avec tkinter.

    Je souhaite actuellement créer une interface graphique qui servira plus tard à faciliter l'exécution de plusieurs actions. Je bloque actuellement sur quelque chose qui me semble pourtant trivial : l'ajout d'une photo en .ppm...

    Après exécution du script, l'erreur suivante apparait : raise RuntimeError('Too early to create image')
    RuntimeError: Too early to create image.

    Après quelques recherches, il semblerait que cette dernière apparaisse lorsque le canva n'a pas encore été créé, chose qui, si je ne me trompe pas n'est pas mon cas.

    Je vous joins le code ci dessous

    Un très grand merci par avance pour toute l'aide que vous pourrez m'apporter !

    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
     
    from tkinter import *
    from tkinter.messagebox import * # boîte de dialogue
     
    # Petite partie sur les couleurs
     
    color1 = '#C1ECFF'
     
     
    def Verification():
        if Motdepasse.get() == 'XXXXXXXXXXX':
            # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
            showinfo('Résultat','Mot de passe correct.')
            Mafenetre.destroy()
     
            # Création de la nouvelle fenêtre
            New_fenetre = Tk()
            New_fenetre.title("Assistant XXXX")
     
            w=600
            h=400
            ws = New_fenetre.winfo_screenwidth()
            hs = New_fenetre.winfo_screenheight()
            x = (ws/2) - (w/2)
            y = (hs/2) - (h/2)
            New_fenetre.geometry('%dx%d+%d+%d' % (w, h, x, y))
     
            New_fenetre.tk_setPalette(background='#C1ECFF', foreground='black',
                   activeBackground='black', activeForeground=color1)
     
            # Création d'un widget label (texte 'Bienvenue sur l'assistant XXX')
            label = Label(New_fenetre, text = "Bienvenue sur l'assistant XXX")
            label.pack(side = LEFT, padx = 5, pady = 5)
     
            New_fenetre.mainloop()
     
            # Ajout du logo de XXXX
     
            mon_image = PhotoImage(file = "logo XXXX.ppm")
            largeur = mon_image.width()  # dimensions en nombre de pixels
            hauteur = mon_image.height()
     
            zone_image = Canvas(New_fenetre, width = largeur, height = hauteur) # crée un canevas de dimensions ajustées à celles de l'image
            zone_image.create_image(0,0, anchor = NW, image = mon_image) # association image/widget
            zone_image.pack(side = LEFT, padx = 5, pady = 5) # placement du widget
     
        else:
            # le mot de passe est incorrect : on affiche une boîte de dialogue
            showwarning('Résultat','Mot de passe incorrect.\nVeuillez recommencer !')
            Motdepasse.set('')
     
    # Création de la fenêtre principale (main window)
    Mafenetre = Tk()
    Mafenetre.title('Identification requise')
     
    # Création d'un widget Label (texte 'Mot de passe')
    Label1 = Label(Mafenetre, text = 'Mot de passe ')
    Label1.pack(side = LEFT, padx = 5, pady = 5)
     
    # Création d'un widget Entry (champ de saisie)
    Motdepasse= StringVar()
    Champ = Entry(Mafenetre, textvariable= Motdepasse, show='*', bg ='bisque', fg='maroon')
    Champ.focus_set()
    Champ.pack(side = LEFT, padx = 5, pady = 5)
     
    # Création d'un widget Button (bouton Valider)
    Bouton = Button(Mafenetre, text ='Valider', command = Verification)
    Bouton.pack(side = LEFT, padx = 5, pady = 5)
     
    Mafenetre.mainloop()
    PS: Je précise au cas où que la photo en question est situé dans le même dossier que l'enregistrement du fichier python

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

    On a ce message lorsque la fenêtre principale n'a pas été créée ou a été détruite.
    Vous n'êtes pas supposé(*) avoir 2 appels Tk() mais un seul (les autres étant des fenêtres secondaires créées via Toplevel())
    (*) sinon vous sauriez comment faire avec...

    - 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
    Août 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2021
    Messages : 10
    Par défaut
    Hello Wiztricks,

    Je te remercie pour ta réponse ! J'ai ainsi modifié mon code comme ceci:
    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
    from tkinter import *
    from tkinter.messagebox import * # boîte de dialogue
     
    # Petite partie sur les couleurs
     
    color1 = '#C1ECFF'
     
     
    def Verification():
        if Motdepasse.get() == 'XXXXXXXXXXX':
            # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
            showinfo('Résultat','Mot de passe correct.')
            Mafenetre.destroy()
     
            # Création de la nouvelle fenêtre
            New_fenetre = Toplevel()
            New_fenetre.title("Assistant XXXX")
     
            w=600
            h=400
            ws = New_fenetre.winfo_screenwidth()
            hs = New_fenetre.winfo_screenheight()
            x = (ws/2) - (w/2)
            y = (hs/2) - (h/2)
            New_fenetre.geometry('%dx%d+%d+%d' % (w, h, x, y))
     
            New_fenetre.tk_setPalette(background='#C1ECFF', foreground='black',
                   activeBackground='black', activeForeground=color1)
     
            # Création d'un widget label (texte 'Bienvenue sur l'assistant XXX')
            label = Label(New_fenetre, text = "Bienvenue sur l'assistant XXX")
            label.pack(side = LEFT, padx = 5, pady = 5)
     
            New_fenetre.mainloop()
     
            # Ajout du logo de XXXX
     
            mon_image = PhotoImage(file = "logo XXXX.ppm")
            largeur = mon_image.width()  # dimensions en nombre de pixels
            hauteur = mon_image.height()
     
            zone_image = Canvas(New_fenetre, width = largeur, height = hauteur) # crée un canevas de dimensions ajustées à celles de l'image
            zone_image.create_image(0,0, anchor = NW, image = mon_image) # association image/widget
            zone_image.pack(side = LEFT, padx = 5, pady = 5) # placement du widget
     
        else:
            # le mot de passe est incorrect : on affiche une boîte de dialogue
            showwarning('Résultat','Mot de passe incorrect.\nVeuillez recommencer !')
            Motdepasse.set('')
     
    # Création de la fenêtre principale (main window)
    Mafenetre = Tk()
    Mafenetre.title('Identification requise')
     
    # Création d'un widget Label (texte 'Mot de passe')
    Label1 = Label(Mafenetre, text = 'Mot de passe ')
    Label1.pack(side = LEFT, padx = 5, pady = 5)
     
    # Création d'un widget Entry (champ de saisie)
    Motdepasse= StringVar()
    Champ = Entry(Mafenetre, textvariable= Motdepasse, show='*', bg ='bisque', fg='maroon')
    Champ.focus_set()
    Champ.pack(side = LEFT, padx = 5, pady = 5)
     
    # Création d'un widget Button (bouton Valider)
    Bouton = Button(Mafenetre, text ='Valider', command = Verification)
    Bouton.pack(side = LEFT, padx = 5, pady = 5)
     
    Mafenetre.mainloop()
    Néanmoins, de là découle deux problèmes:

    - Le premier concerne l'image, qui ne se charge toujours pas. Le message d'erreur a néanmoins changé pour le suivant: _tkinter.TclError: couldn't open ... no such file or directory. Je ne comprend pas pourquoi ce message d'erreur intervient alors même que l'image en question est enregistré dans le même dossier que le script.

    - Le second, vient selon moi de la modification réalisée (toplevel). J'ai surement du faire une erreur puisque maintenant une fois l'authentification effectuée, non pas une mais bien deux fenêtres s'ouvrent simultanément. La première avec les caractéristiques demandées (taille, couleur.... mais bien sans l'image) et la seconde (dont je souhaiterais me débarrasser) dont le nom est #21 (le nombre augmentant eu gré des exécutions du script).

    Un très grand merci par avance à tous ceux qui pourront m'aider dans la résolutions de ces problèmes

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 605
    Par défaut
    Bonjour

    - rajoute la lib pathlib : from pathlib import Path
    - ligne 38 : mon_image = PhotoImage(file = Path("logo XXXX.ppm"))

    Je pense que tu as un soucis sur le chemin absolu de ton image.

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 605
    Par défaut
    Si ça ne fonctionne pas, cherche à savoir quel répertoire est le répertoire courant de ton programme au moment où tu demandes le chargement de l'image PPM.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from pathlib import Path
    print(f'dossier courant actuel : {Path.cwd()}'
    La seconde ligne est à placer à l'emplacement adéquat hein, juste avant le chargement de l'image

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2021
    Messages : 10
    Par défaut
    Salut Arioch,

    Merci beaucoup pour ta réponse.

    J'ai bien pris en compte tes suggestions mais malgré çela, le message d'erreur reste identique et l'image refuse de se charger....

    EDIT: Suite à ton deuxième message j'ai récupéré le chemin dans lequel se trouve le programme au moment ou je demande le chargement de l'image PPM, et il se trouve qu'il s'agit du bon dossier (dans lequel se trouve l'image en .PPM).
    Par contre le Shell m'indique maintenant une erreur de syntaxe sur la ligne suivante (bloquant bien entendu l'exécution des lignes d'après)....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_image = PhotoImage(file = Path("logo XXXX.ppm"))
    Encore merci

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 605
    Par défaut
    Je viens de rajouter une réponse juste au dessus. Regarde

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2021
    Messages : 10
    Par défaut
    Yes j'ai vu ça et t'en remercie. J'ai fais un Edit de ma réponse pour l'adapter à ta seconde suggestion

  9. #9
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 605
    Par défaut
    Du coup, quel message d'erreur te retourne Python ?

    Je pense que tu devrais tester le chemin complet au moment de charger ton image.

    Ceci est un exemple fait en console PowerShell :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> from pathlib import Path
    >>> dossier_source: Path = Path.cwd()
    >>> fichier: Path = Path('file.zip')
    >>> Path(dossier_source, fichier)
    WindowsPath('C:/Users/xxx/Downloads/file.zip')
    >>>
    Affecte le chemin complet vers ton fichier PPM à ta variable mon_image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_image = PhotoImage(file = Path(Path.cwd(), Path("logo XXXX.ppm")))
    EDIT : que donne dans ton code (en console) le code suivant stp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print(Path.is_file("logo XXXX.ppm"))
    Ca te renvoit True ou False ?

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2021
    Messages : 10
    Par défaut
    Pour répondre à ton edit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    from pathlib import Path
    print(Path.is_file("logo XXXX.ppm"))
    Voici ce que le shell me renvoi:

    Traceback (most recent call last):
    File "<console>", line 1, in <module>
    File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/pathlib.py", line 1420, in is_file
    return S_ISREG(self.stat().st_mode)
    AttributeError: 'str' object has no attribute 'stat'

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

    La syntaxe serait plutôt: Path("logo XXXX.ppm").is_file().

    Ceci dit, le répertoire courant n'est pas le répertoire du script (là où est le .ppm).
    Soit vous changez de répertoire, soit vous préfixez le nom du fichier avec ce répertoire là en dur, soit vous pouvez l'extraire de la variable __file__.

    Lorsque vous serez arrivé à faire marcher PhotoImage, vous allez constater que l'image ne s'affiche pas car l'objet n'a pas été stocké dans une variable globale.

    Tout çà pour dire que tous ces soucis en quelques lignes montrent que programmer, c'est pas si facile que çà... Et si vous voulez écrire du code sans avoir tâtonné un peu dans les exercices proposés par les tutos, vous trébuchez à la moindre difficulté.


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

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2021
    Messages : 10
    Par défaut
    Salut Wiztricks,

    Je te remercie une nouvelle fois pour ta réponse.
    Si cela ne te dérange pas, serait-il possible de reprendre les deux problèmes que je rencontre dans l'ordre ?

    A l'heure actuelle, j'ai modifié le double appel tk par un appel tk et un appel toplevel. Néanmoins une fenêtre additionnelle non désirée s'ouvre maintenant en plus de celle souhaitée. Aurais-je mal compris ce que tu me disais de faire ce matin ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    def Verification():
        if Motdepasse.get() == 'XXXX':
     
            # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
            showinfo('Résultat','Mot de passe correct.')
            Mafenetre.destroy()
     
            # Création de la nouvelle fenêtre
            New_fenetre = Toplevel()
            New_fenetre.title("Assistant XXX")
    Le second problème que je rencontre concerne toujours l'image à afficher et j'avoue que la complexité me dépasse un peu . Je suis néanmoins toujours parti du principe que c'est en trébuchant que l'on comprend et que l'on apprend

    A partir du code que j'ai upload un peu plus haut dans la conversation, n'y aurait-il pas une façon disons relativement aisé d'afficher cette image ? J'avais cru comprendre que les images en .gif et .ppm étaient normalement relativement simples a afficher (et ce grace à la non utilisation du module PIL).

    Pour répondre a la question du true or false, cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Path("logo XXXX.ppm").is_file()
    me renvoi false

    Enfin, auriez-vous des conseils sur l'articulation mon code ? Est-ce actuellement logique ou devrais-je le réorganiser, pour plus de clarté ?

    Merci encore pour l'aide que vous m'apportez !

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

    Citation Envoyé par nonolerobot0831 Voir le message
    A l'heure actuelle, j'ai modifié le double appel tk par un appel tk et un appel toplevel. Néanmoins une fenêtre additionnelle non désirée s'ouvre maintenant en plus de celle souhaitée. Aurais-je mal compris ce que tu me disais de faire ce matin ?
    Si on ne détruit plus la fenêtre principale et qu'on créer une 2ème fenêtre... on se retrouve avec 2 fenêtres ouvertes en même temps.
    Normal et ça ne dépend pas de l'utilisation de Toplevel ou pas.

    Mais c'est une contrainte avec laquelle vous devez faire! Soit en organisant une sorte de suite de pages successives qui s'afficheront toutes dans la fenêtre principale... soit en masquant la fenêtre principale, soit en réalisant une boite de dialogue pour la saisie du mot de passe.

    Citation Envoyé par nonolerobot0831 Voir le message
    Enfin, auriez-vous des conseils sur l'articulation mon code ? Est-ce actuellement logique ou devrais-je le réorganiser, pour plus de clarté ?
    Il faut apprendre le b.a.ba des interfaces graphiques et regarder comment sont organisées les applications qui tournent sur votre PC en vous disant, si je voulais faire comme çà, comment je m'y prendrais (avec tkinter).

    C'est un sujet assez compliqué qui demande d'y passer un certain temps... Car ceux qui ont inventé ça l'ont fait avec une certaine logique qui n'a rien de naturel. Et qu'il faut essayer de se ré-approprier.

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

  14. #14
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2021
    Messages : 10
    Par défaut
    Hello Wiztricks,

    Je pense que je me suis mal exprimé concernant mon problème de double fenêtre. En effet, la fenêtre principale que je lance au début est celle pour l'authentification de l'utilisateur. Une fois l'authentification réussie, cette fenêtre se détruit. Par la suite, et en suivant tes conseils, j'ai supprimé le deuxième appel tk que j'avais réalisé et l'ai remplacé par un toplevel (fonction que je ne maitrise pas vraiment, et qui, je trouve est relativement mal documentée sur internet). Cette fonction top level me permet bien de créer la fenêtre souhaitée avec les différents paramètres que j'y ai associé. Néanmoins, ce toplevel m'ouvre une autre fenêtre s'intitulant #Nombre qui elle est totalement indésirable..... Sais-tu comment je peux m'en débarrasser ?

    Encore merci

  15. #15
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par nonolerobot0831 Voir le message
    Je pense que je me suis mal exprimé concernant mon problème de double fenêtre. En effet, la fenêtre principale que je lance au début est celle pour l'authentification de l'utilisateur. Une fois l'authentification réussie, cette fenêtre se détruit.
    La fenêtre principale ne se détruit pas toute seule: c'est vous qui le demandez.

    J'ai essayé de vous expliquer qu'on ne détruit pas la fenêtre principale sauf peut être avant la sortie de l'application (la fin du programme).

    Essayez ce petit bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import tkinter as tk
    >>> root = tk.Tk()
    >>> root.destroy()
    >>> tk.Toplevel()
    Vous allez avoir 2 fenêtres... parce que la "fenêtre principale" est plus que le carré qui s'affiche à l'écran, c'est aussi la racine de tous les widgets créés ensuite.

    Lorsqu'il n'y en a plus (ou lorsqu'il n'y en a pas), tkinter la crée automatiquement.

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

Discussions similaires

  1. Ajout zone photo avec action sur un bouton
    Par spidercrash dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/09/2008, 09h00
  2. [Tkinter] Ajouter un element dans OptionMenu
    Par t_om84 dans le forum Tkinter
    Réponses: 12
    Dernier message: 29/05/2008, 17h46
  3. Ajouter un photo a travers une form.
    Par lazins dans le forum C#
    Réponses: 6
    Dernier message: 09/03/2008, 13h17
  4. [ETAT] ajout de photos dans un etat
    Par Satan dans le forum IHM
    Réponses: 1
    Dernier message: 07/06/2007, 17h27
  5. Comment ajouter une photo à mon profil ?
    Par ghita269 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 5
    Dernier message: 18/11/2005, 20h36

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