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 :

Création de canvas dans une fonction


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Création de canvas dans une fonction
    Bonjour, Afin de faire un logiciel de pointage pour faire de la mécanique, je souhaiterais créer un canvas à l'intérieur d'une fonction.
    Ce Canvas ce situera à l'interieur d'un PanedWindow (afin de séparer la fenetre), et j'ai plus ou moins reussi à voir que le problème vient du fait que le PanedWindow ne se met pas à jour.

    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
    from tkinter import *
    import os
    from tkinter.filedialog import askdirectory
     
    name_directory = os.path.dirname(os.path.realpath("test.py"))
    name_files = sorted(os.listdir(name_directory))
     
    # Ouvre un dossier contenant les photos à pointer
    def open_directory(ev = None):
    	global name_directory, name_files
    	name_directory = askdirectory(title="Ouvrir un dossier d'images")
    	name_files = sorted(os.listdir(name_directory))
     
    	## j'aimerais afficher l'image suivante dans un canvas, qui serait situé dans 
    	## le widget conteneur1
    	photo = PhotoImage(file = name_directory+"/"+name_files[0])
    	w,h = photo.width() , photo.height()
    	can = Canvas(conteneur1, width=w, height=h)
    	can.pack()
    	can.create_image(0,0,image = photo)
    	print(w,h)
     
     
    fene = Tk()
     
    # creation de mon panneau
    T = PanedWindow(fene, orient = 'horizontal')
    T.pack()
     
    # Placement du cadre etiqueté dans la panneau
    conteneur1 = LabelFrame(T, text= "photo")
    T.add(conteneur1)
     
    # menu
    menubar = Menu(fene)
    menu1 = Menu(menubar, tearoff=0)
    menu1.add_command(label="Charger une photo", command=open_directory)
    menu1.add_command(label="Quitter", command=fene.quit)
    menubar.add_cascade(label="Fichier", menu=menu1)
    fene.config(menu=menubar)
     
    fene.mainloop()
    Le problème se situe entre les lignes 14-21 (ou alors je dois globaliser qqch).
    Je vous remercie d'avance,
    ti.du.du39
    Fichiers attachés Fichiers attachés

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

    Citation Envoyé par ti.du.du39 Voir le message
    (ou alors je dois globaliser qqch).
    Pour que la Photoimage associée à la variable "photo" ne soit pas détruite à la sortie de la fonction, il faut effectivement garder une référence et "global photo" permet de le faire.

    - W

Discussions similaires

  1. recuperer un objet d'un canvas dans une fonction
    Par Torx26 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/05/2012, 19h02
  2. Création de variables dans une fonction
    Par ledisciple dans le forum Langage
    Réponses: 8
    Dernier message: 21/09/2011, 17h37
  3. Réponses: 1
    Dernier message: 25/03/2011, 11h30
  4. [XL-2007] Création nouvelle feuille dans une fonction
    Par DeeGri dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2010, 18h56
  5. Réponses: 2
    Dernier message: 13/03/2007, 15h35

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