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 :

suivre la taille de la fenetre (image)


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Points : 29
    Points
    29
    Par défaut suivre la taille de la fenetre (image)
    Hello

    Je suis un débutant en python, avec des base dans d'autre langage. Également nouveau sur ce forum.
    Je charge une image, seulement celle ci ne suis pas la taille de la fenêtre si elle est agrandie ou réduite:

    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
     
    #!/usr/bin/env python
    # -*- coding:Utf-8 -*-
    from Tkinter import *
    from PIL import Image,ImageTk
     
     
    fen = Tk()
    L=1024
    H=768
    H_image=L/2
    L_image=H/2
     
    my_file = "/home/taz/Desktop/python/1.png"
    can = Canvas(fen, width =L, height =H, bg ='white')
    mon_image=ImageTk.PhotoImage(file=my_file)
    can.create_image(H_image,L_image,image=mon_image)
    can.pack()
     
    fen.mainloop()
    bon c'est pas terrible mai c'est un début,
    Plus tard je voudrai placer des control qui eux aussi aurons une image (et avidement devront suivre la taille de la fenêtre si c est possible)

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Tu trouveras une bonne doc sur tkinter ici: http://infohost.nmt.edu/tcc/help/pubs/tkinter/.

    Dans cette doc:

    1- je te suggère d'utiliser l'exemple du chapitre 2 comme "modèle" pour tes fenêtres, c'est à dire d'utiliser les classes.

    2- il y a un exemple qui répond à ta question au chapitre 3.4. Je l'ai déjà utilisé pour le widget text, mais ça marche aussi pour les canvas.

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Merci pour le lien , j'ai pas encore tester.
    simple question sa s'applique uniquement a la fenetre ou aussi a son contenu , button,caneva,label automatiquement ?

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Je ne suis pas sûr d'avoir bien compris ta dernière question.

    Si elle se réfère à la réponse 1: oui, tu mets tous les codes de création des widgets dans la classe qui construit la fenêtre.

    Si elle se réfère à la réponse 2: je ne sais pas: il faut essayer. Le suivi du redimensionnement n'est valable que pour les widgets pour lesquels on a mis le code en place, et je ne sais pas comment réagissent les autres widgets. Mais on a souvent de bonnes surprises dans ce genre de pb.

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Merci pour les réponses
    c'est plutôt la question 2.

    Mai est-ce possible que le canevas étire l'image ? car pour l'instant c'est fixe !?

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Voilà une idée du code tel que je le vois:

    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
     
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    from Tkinter import *
    from PIL import Image, ImageTk
     
    class Application(Frame):
        def __init__(self, master=None):
            Frame.__init__(self, master)
     
            self.grid(sticky=N+E+S+W)
     
            top = self.winfo_toplevel()
            top.rowconfigure(0, weight=1)
            top.columnconfigure(0, weight=1)
            self.rowconfigure(0, weight=1)
            self.columnconfigure(0, weight=1)
     
            self.SBV = Scrollbar(self, orient=VERTICAL)
            self.SBH = Scrollbar(self, orient=HORIZONTAL)
     
            self.can = Canvas(self, bg = 'white', yscrollcommand = self.SBV.set, xscrollcommand = self.SBH.set)
     
            my_file = r"C:\Python25\Pydev\pil_tkinter\PICT0001.JPG"
            self.image = Image.open(my_file)
            self.x, self.y = self.image.size
            #print self.x, self.y
            self.mon_image = ImageTk.PhotoImage(self.image)
            self.can.configure(scrollregion=(0,0,self.x,self.y))
            self.can.create_image(0, 0, image=self.mon_image, anchor=NW)
     
            self.SBV.config(command=self.can.yview)
            self.SBH.config(command=self.can.xview)
     
            self.can.grid(row=0, column=0, sticky=N+E+S+W)
     
            self.SBV.grid(row=0, column=1, sticky=N+S+E)
            self.SBH.grid(row=1, column=0, sticky=S+E+W)
     
    fen = Tk()
    app = Application(fen)
    fen.geometry("%dx%d%+d%+d" % (600,480,0,0))
    fen.mainloop()
    (il faut, bien entendu, modifier le chemin et le nom de la photo pour pointer sur une photo à toi. Sélectionne une photo assez grande pour mieux évaluer le comportement du code)

    Avec ce code, la photo n'est pas "étirée": selon le redimensionnement, la fenêtre laisse voir une partie plus ou moins grande de la photo. Et par ailleurs, la partie visible de la photo se déplace en fonction de la position des ascenseurs.

    Je ne sais pas faire la même chose avec une photo qui "s'étire" avec le redimensionnement de la fenêtre.

    Tu peux ajouter d'autres éléments type button, entry, ... pour voir comment ils se comportent avec le redimensionnement de la fenêtre.

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Bonjour,
    Un exemple :
    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    from Tkinter import *
    from PIL import Image, ImageTk
     
    class Application:
        def __init__(self):
            self.root=Tk()
            my_file = r"test.jpg"
            self.image = Image.open(my_file)
            self.x, self.y = self.image.size
            self.can=Canvas(self.root,width=self.x,height=self.y,bg='white')
            self.can.bind("<Configure>",self.resize)
            self.can.pack(expand=Y,fill=BOTH)
     
        def resize(self,event):
            try:
                self.can.delete(self.can.image)
            except:
                pass
            self.img=self.image.resize((event.width,event.height))
            self.mon_image = ImageTk.PhotoImage(self.img)
            self.can.image=self.can.create_image(0, 0, image=self.mon_image, anchor=NW)
     
    app=Application()
    app.root.mainloop()

Discussions similaires

  1. Redimension image a la taille de la fenetre.
    Par anonymeDork dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 19/07/2014, 14h19
  2. suivre un objet en mouvement sur image
    Par jlf dans le forum Traitement du signal
    Réponses: 24
    Dernier message: 09/05/2005, 13h46
  3. [DEBUTANT][JDialog] taille de la fenetre
    Par matN59 dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 30/08/2004, 07h49
  4. Taille de la fenetre DOS
    Par Haza dans le forum C
    Réponses: 9
    Dernier message: 08/02/2003, 14h29
  5. Réponses: 3
    Dernier message: 22/07/2002, 14h19

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