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 :

simple photo viewer


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut simple photo viewer
    Bonjour,
    voila je suis un gros débutant en python, je n'ai pas encore fini de lire le livre "apprendre python 3"
    j'en suis au chapitre avant les "class"
    mais j'ai voulu me lancer dans un petit projet perso histoire de tester

    quand je lance mon script (écrit avec les pieds )je vois une premiere photo mais quand je clique sur le binding, je vois le résultat seulement en console mais c'est toujours la me image dans ma fenetre Tk.

    un petit indice sur le comment faire pourrai etre d'une tres grande aide merci.

    Attention les yeux

    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
    #!/usr/bin/env python
    # -*- encoding: utf-8 -*-
     
    from tkinter import *
    import os
    from PIL import Image  # $ pip install pillow
    from PIL import ImageTk
     
    #comment = true
     
    #ouvrir est la photo selectionné au début
    #de la on va dans son dossier et on liste les .jpg	
     
    class Rendu_image(object):
    	"""le process des images"""
    	def __init__(self,master,list_photos,premiere,w,h):
    		self.top = master
    		self.files = list_photos
    		self.index = premiere
    		filename = self.files[self.index]
    		self.w = w
    		self.h = h
    		Rendu_image.show_image(self,filename,w,h)
     
    	def show_image(self,filename,w,h):
    		im = Image.open(filename)
     
    		size = im.size
    		print(filename,size)
    		if size[0] > size[1]:
    			ratio = size[0] / size[1]
    			image_h = int(size[1] * (self.h / size[1]))
    			image_w = int(image_h * ratio)
    		else:
    			ratio = size[1] / size[0]
    			image_w = int(size[0] * (self.w / size[0]))
    			image_h = int(image_w * ratio)
    		print(image_w,image_h,ratio, image_w/image_h)
    		image_resized = im.resize((image_w, image_h), Image.ANTIALIAS)
    		tk_image = ImageTk.PhotoImage(image_resized)
    		label = Label(root, image=tk_image, width=w, height=h)
    		label.image = tk_image
    		label.pack(fill=BOTH, expand=1)
     
     
    	def next_photo(self,*args):
    		self.index += 1
    		if self.index == len(self.files):
    			self.index = 0
    		filename = self.files[self.index]
    		Rendu_image.show_image(self,filename,self.w,self.h)
     
     
    #pour lister les photos dans le dossier
    def get_pictures(ouvrir):
    	destination = os.path.dirname(ouvrir) + "/"
    	os.chdir(destination)  # go to "path"
    	photo = []
    	suffix = (".jpg",".jpeg",".png",".gif")   #prise en charge de formats.
    	for filename in os.listdir():
    		if filename.lower().endswith(suffix):
    			photo.append(filename)
    			photo.sort()
    	return photo
     
     
     
    w,h = 800,550
    ouvrir = input()       #choix de la photo à ouvrir(et du dossier)
    list_photos = get_pictures(ouvrir)   #liste photos(.jpg pour le moment)
    ouverte =  os.path.basename(ouvrir)  #la choisie pour commencer par
    premiere = list_photos.index(ouverte)
    print(list_photos)
    print(premiere)
     
     
    root = Tk()
    root.title("Title")
    root.geometry("800x550")
    root.configure(background="black")
    image = PhotoImage(ouverte)
    images = Label(root,image=image, bd=0)
    images.pack()
     
    e=Rendu_image(root,list_photos,premiere,w,h)
    root.bind('<Right>', e.next_photo)
    root.mainloop()
    Merci pour votre lecture

    Jiep

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

    Relisez votre code: l'image suivant est affichée dans un Label qui sera ajouté aux Labels déjà créés (et affichés).
    Prenez un exemple "simple", votre code fait un peu cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> import tkinter as tk
    >>> root = tk.Tk()
    >>> for x in range(10):
    ...     tk.Label(root, text='t-%d' % x).pack()
    ...
    >>>
    Si on voit les Labels dans cet exemple, c'est que nous laissons la fenêtre s'agrandir au fur et à mesure de l'ajout de Labels.
    Si on impose une taille fixe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> root.geometry('100x100')
    ''
    >>> for x in range(10):
    ...     tk.Label(root, text='t-%d' % x).pack()
    ...
    On ne voit plus que ce qui entre dedans... et ce qui déborde sera "masqué".

    Pour faire fonctionner votre code, faites en sorte de remplacer l'image affichée par le Label plutôt que de créer de nouveaux Labels.

    - 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
    sans
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut merci
    Merci pour l'explication, il est vrai que je vois apparaître le haut de l'image suivant sous la précédente, j'avais pas remarqué

    je vais chercher comment faire pour fixer ça.

    merci pour le hint Mr -W-

  4. #4
    Futur Membre du Club
    Homme Profil pro
    sans
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut fait
    merci, j'ai résolus le problème

    merci pour le conseil.

    Now j'ai un autre problème à surmonter, savoir si je peux incruser un sous-titre sur cette photo.

    je pars à la recherche

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Galerie] Script galerie photos très simple
    Par breizhgen dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 23/05/2008, 12h14
  2. [CR 9 ou XI] Viewer pour utilisateurs simples
    Par Riwalenn dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 18/03/2008, 10h01
  3. [HTML] Photo la plus simple non éditée ! !
    Par rjl dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 11/03/2008, 22h50
  4. Un Viewer simple. et beau?
    Par onur dans le forum Mon site
    Réponses: 3
    Dernier message: 04/08/2006, 18h06
  5. [Système] Faire une galerie photo simple
    Par titor dans le forum Langage
    Réponses: 10
    Dernier message: 24/06/2006, 21h02

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