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

wxPython Discussion :

Taille d'une image et taille d'une fenêtre


Sujet :

wxPython

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Points : 36
    Points
    36
    Par défaut Taille d'une image et taille d'une fenêtre
    Bonjour,
    je souhaite dimensionner une fenetre wx à partir une image.
    j'arrive à déterminer la taille de mon image en utilsant les méthodes GetWidth() et GetHeight(). Et forcement, lorsque je redimensionne ma fenetre en utilisant SetSize(), il m'en manque un bout
    Si quelqu'un pouvait m'expliquer comment faire et me joindre un petit bout de code, je lui vouerai une reconnaissance eternelle.

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour Yachas,

    Je n'utilise pas wx mais si cela t'es utile voici un petit bout de code (en fait un splash screen) :

    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
    #       self.iconbitmap('@' + ImageAppli)
            self.withdraw()
            wisplash = Toplevel()
            wisplash.FondImage = PhotoImage(file = PathWasabi + "arriere.ppm")
            wisplash.overrideredirect(1)
            wt = wisplash.winfo_screenwidth()
            ht = wisplash.winfo_screenheight()
            w = wisplash.FondImage.width()
            h = wisplash.FondImage.height()
            wisplash.geometry("%dx%d+%d+%d" % (w,h, (wt-w)/2, (ht-h)/2 ) )
            wisplash.cv = Canvas(wisplash, width=w, height=h)
            wisplash.cv.pack(side='top', fill='both', expand='yes')
            wisplash.cv.create_image(0, 0, image=wisplash.FondImage, anchor='nw')
            wisplash.cvtexte1 = 'Wasabi'
            wisplash.cvtexte2 = WsbFonction
            wisplash.cvtexte3 = 'Version : ' + VersionNumber
            wisplash.cvtexte4 = ProgDate
            wisplash.cv.create_text(150, 100, font=("arial", 26, "bold italic"),
            text=wisplash.cvtexte1, fill='#8b4513')
            wisplash.cv.create_text(150, 140, font=("arial", 12, "bold"),
            text=wisplash.cvtexte2, fill='#8b4513')
            wisplash.cv.create_text(150, 190, font=("arial", 12, "bold"),
            text=wisplash.cvtexte3, fill='#8b4513')
            wisplash.cv.create_text(150, 270, font=("arial", 12, "bold"),
            text=wisplash.cvtexte4, fill='#8b4513')
            wisplash.bind('<1>', self.showRoot)
            self.after(600, self.showRoot)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Points : 36
    Points
    36
    Par défaut
    Ayeheuuuuuuu !!!
    Eh Bééé ! Moi pas tout comprendre ^^
    Merci de ta réponse, néanmoins, mes connaissances en python sont encore fraiches et là, ça dépasse mes compétences.
    Si tu pouvais me traduire tout ça en français moyen
    Parceque là !?!
    Enfin, si c'est possible, bien sûr !!!
    C'est sympa de m'accorder un peu de ton temps... Et je te voue quand meme une reconnaissance eternelle

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 396
    Points
    396
    Par défaut
    Je pense que c'est un truc dans ce style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    self.SetClientSize(wx.Size(Width, Height))
    self.Fit()

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Et bien ton GetWidth/GetHeight semble donner la taille en pixels (soit l'équivalent de mes FondImage.width() et FondImage.height()).
    Tu l'utilise comment ton SetSize() ?
    A vrais dire dans l'exemple suivant j'utilise wisplash.cv = Canvas(wisplash, width=w, height=h).
    Ton problème viens sans doute des borderwidth si j'ai bien compris, non ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Points : 36
    Points
    36
    Par défaut
    PauseKawa (j'adore ton pseudo ^^^)
    En fait, c'est bien le problème... Je récupère la taille de mon image en pixel et je fixe la taille de ma fenetre à partir de ces données Height et Wight.
    Effectivement, la taille de ma fenetre est dimensionnée à partir de ces données et ce qui manque à mon image c'est bien les borderwidth.
    Alors, j'y vais de calculs savants qui me permettent de determiner la tailles de ces "borderwidth"... (Enfin, c'est plus un calcul empirique à grand coup d'essais malheureux
    J'imagine qu'il doit exister des methodes wxpython me permettant de réaliser cela facilement. Mais je n'arrive pas à les trouver... Ou alors, je n'applique pas la bonne façon.
    les formules de "gamal" semblent prometteuses, mais je ne pourrais les tester que Lundi... Pour le moment, c'est le week end à la maison ^^
    Merci de vos réponses et de vos conseils.
    A+

  7. #7
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Par contre ce n'est pas la fenêtre que tu dois dimensionner car tu vas avoir affaire a la barre de titre. Crée plutôt un conteneur pour ton image (moi j'utilise un canvas) et donne la taille de la bordure du conteneur manuellement du style

    Width du conteneur = Width de l'image + 2*la taille de la bordure
    Height du conteneur = Height de l'image + 2*la taille de la bordure

    Laisse ta fenêtre se dimensionner par rapport à ton conteneur.
    Cela déborde encore avec cela ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Points : 36
    Points
    36
    Par défaut
    Salut,
    Tu sous-entends que si je crée un conteneur à la taille de mon image, la fenetre s'adapterait à la taille de mon conteneur ?
    Auquel cas, cela répondrait à mon attente...
    Enfin, si j'arrive à coder tout ça !!!!

  9. #9
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    C'est l'exemple que je te donne au début. J'y utilise le Canvas wisplash.cv comme conteneur pour l'image arriere.ppm afin de faire un splash screen au lancement de l'application.

    Dans l'image suivante j'ai bloquer la fermeture du Widget wisplash et tu retrouve l'image d'origine arriere.ppm (wisplash.FondImage = PhotoImage(file = PathWasabi + "arriere.ppm")
    ) en haut à gauche.
    Mais bon, c'est du Tkinter et à toi de traduire.

    [img=http://img196.imageshack.us/img196/1588/capturepy.png]

    Tu remarqueras qu'il n'y a que sur la hauteur ou il reste a jouer mais cela viens sans doute de mon toplevel et de mon overrideredirect.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Points : 36
    Points
    36
    Par défaut
    Ayyyyééééé !!!
    Victoire de l'homme sur la matière...
    Ci joint, le code que j'ai pondu... Bon, je suis sûr qu'il y a matière à perfectionner.
    si quelqu'un veut bien s'y pencher et me montrer comment optimiser cela, faut savoir qu'il travaille pour la posterité

    Merci à tous ceux qui se sont penchés sur mon malheur

    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
    #-------------------------------------------------------------------------
    class frm_Ouverture(wx.Panel):
        """Page d'ouverture du programme"""
    #-------------------------------------------------------------------------
        def __init__(self):
     
            wx.Panel.__init__(self, -1)
     
            # ----------------------------------------------------------------
            # Dessine l'image d'ouverture et redimensionne la fenêtre 
            # à partir d'une image
            # ----------------------------------------------------------------
            png = wx.Image('.' + os.sep + 'images' + os.sep + "image_Ouverture.png",
                  wx.BITMAP_TYPE_PNG).ConvertToBitmap()
            wx.StaticBitmap(self, -1, png, (0,0), (png.GetWidth(), png.GetHeight()))
            parent.SetClientSize(wx.Size(png.GetWidth(), png.GetHeight()))
            parent.Fit()
            parent.Centre()
     
    #-------------------------------------------------------------------------

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Une solution de plus !
    Bonjour Yachas,

    voici en pièce jointe un petit script " COMPLET " qui répond à ta question
    " Comment dimensionner une fenêtre wx à partir d'une image ? ".

    J'espère que ce script, optimisé ou non te conviendra.

    Bonne continuation.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 82
    Points : 36
    Points
    36
    Par défaut
    Super merci
    Effectivement, c'est beaucoup plus joli que mon propre code.
    Je te remercie beaucoup.
    ps: si des fois tu te sens pour mon problème de barre d'outil ^^
    n'hesite pas... Ce serait dommage... enfin, pour moi
    A+

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

Discussions similaires

  1. [Python 3.X] Créer une image png à partir d'une image de format quelconque avec Python
    Par bguy4 dans le forum Général Python
    Réponses: 3
    Dernier message: 30/10/2014, 10h49
  2. Afficher une image par défaut lorsque une image ne s'affiche pas
    Par ne2sbeal dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 10/10/2011, 10h42
  3. Réponses: 4
    Dernier message: 12/09/2008, 14h30
  4. Réponses: 8
    Dernier message: 30/08/2006, 14h22
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06

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