Partage
  • Partager sur Facebook
  • Partager sur Twitter

Une image un poil trop grande ...

Sujet résolu
    24 août 2014 à 11:02:42

    Bonjours a tous et toute,

    Dans un de mes programme j'ai voulus, dans une barre de menu, mettre un bouton permettant de fermer la fenêtre,

    problème l'image fait du 80 par 80 et quand je lance le programme voici ce que sa me donne: 

    (le bouton prend une grande partit de la fenêtre)

    Et voici mon code:

    from tkinter import *
    
    Mw = Tk()
    
    def center_window(w, h):                            
        ws = Mw.winfo_screenwidth()                                   
        hs = Mw.winfo_screenheight()                            
        x = (ws/2) - (w/2)                                                      
        y = (hs/2) - (h/2)                              
        Mw.geometry('%dx%d+%d+%d' % (w, h, x, y))
    
    center_window(260, 330)
    Mw.title('My Window ')
    Mw.configure(bg = 'Gainsboro')
    text1=Label(Mw,text='Bienvenue\ndans My Window !\n', fg='darkslateblue', bg='Gainsboro', font=('MV Boli',15)).pack(side=TOP)
    
    
    
    photo = PhotoImage(file='croix.gif')
    
    
    main = Menu(Mw)
    main.add_command(image=photo, command=quit)
    Mw.configure(menu=main)
    Mw.mainloop()
    

    J'ai donc chercher a redimensionner l'image, voici ce que me rétorque la console:

      File "Mwindow.py", line 19, in <module>
        photo = PhotoImage(file='croix.gif')
      File "/usr/lib/python3.3/tkinter/__init__.py", line 3406, in __init__
        Image.__init__(self, 'photo', name, cnf, master, **kw)
      File "/usr/lib/python3.3/tkinter/__init__.py", line 3362, in __init__
        self.tk.call(('image', 'create', imgtype, name,) + options)
    _tkinter.TclError: couldn't recognize data in image file "croix.gif"
    

    Merci d'avance pour vos réponses.:)


    • Partager sur Facebook
    • Partager sur Twitter
      24 août 2014 à 11:44:00

      Tu as essayé avec un autre image gif ?
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        24 août 2014 à 11:52:33

        Je verrais plutôt le code du dessous

        main.add_command(image=photo, command=quit)
        main.image = photo # pour garder la référence
        

        mais je peux me tromper, je n'utilise pas ce widget très souvent

        -
        Edité par Anonyme 24 août 2014 à 11:55:56

        • Partager sur Facebook
        • Partager sur Twitter
          24 août 2014 à 11:53:38

          Si je la redimensionne: même problème ...
          • Partager sur Facebook
          • Partager sur Twitter
            24 août 2014 à 11:57:20

            Objection, oldProgrammer,

            si tu vas sur ce site: http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/button.html

            tu peut voire qu'il existe une option image, je n'avais plus cas l’insérer dans un add_command


            • Partager sur Facebook
            • Partager sur Twitter
              24 août 2014 à 15:07:54

              bonjour,

              pour redimensionner je fais ça :

              x1 et x2 sont des int

              img= tkinter.PhotoImage(file="monImage.gif").zoom(x1).subsample(x2)

              • Partager sur Facebook
              • Partager sur Twitter
                25 août 2014 à 12:03:18

                Salut elafitz, merci pour cette proposition,

                mais si je l'utilise voici ce qu'on me repond:

                Traceback (most recent call last):
                  File "Mwindow.py", line 22, in <module>
                    img=PhotoImage(file='croix.gif').zoom(x1).subsample(x2)
                NameError: name 'x1' is not defined

                Tu as peut être oublier une ligne de commande, non ?

                -
                Edité par Lozul 25 août 2014 à 12:04:08

                • Partager sur Facebook
                • Partager sur Twitter
                  25 août 2014 à 14:22:18

                  bonjour, il est évident que c'était pour exemple,

                  x1 et x2 sont des entiers, vous pouvez mettre ce que vous voulez comme valeur,

                  dans mon code :

                  x1 = tkinter.IntVar()

                  x2 = tkinter.IntVar()

                  x1.set(2)     (par exemple)

                  x2.set(2)  (par exemple)

                  img= tkinter.PhotoImage(file="monImage.gif").zoom(x1).subsample(x2)

                  là, ça marche, ce qu il faut savoir, c'est que .zoom(2) agrandira l'image de 2x, subsample la réduira, à vous de choisir les bonnes

                  valeurs pour obtenir la taille désirée

                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 août 2014 à 14:26:52

                    si vous voulez réduire de moitié:

                    .zoom(1).subsample(2)

                    par exemple

                    si vous écrivez .zoom(5).subsample(2), l'image sera 2.5 fois plus petite

                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 août 2014 à 14:28:49

                      on est pas obligé de passer par la déclaration de variable tkinter, on peut directement mettre des valeurs dans les parenthèses.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 août 2014 à 14:37:38

                        rectification:

                        si vous écrivez .zoom(5).subsample(2), zoom(5) l'agrandit de 5 fois et subsample divise par 2 cet agrandissement

                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 août 2014 à 17:35:31

                          Que de réponses !

                          Merci et désoler pour ma méprise ;)

                          • Partager sur Facebook
                          • Partager sur Twitter
                            25 août 2014 à 17:42:03

                            Encore merci elafitz,

                            L'image (le bouton donc) on pris un format correct.

                             Je vous invite tous a nous dire comment vous auriez fais !

                            Et encore merci.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              25 août 2014 à 23:51:11

                              Je suis content quand on m'aide, alors si je peux aider ça me fait plaisir, les forums sont fait pour ça, n'étant pas ingénieur et programmeur professionnel j'ai beaucoup appris sur les forums, voilà, j'espère que vous pourrez mener à bien votre projet,:honte:
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Une image un poil trop grande ...

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown