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 :

PIL tile cannot extend outside image


Sujet :

Tkinter Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut PIL tile cannot extend outside image
    bjr,
    J'utilise PIL pour la 1ere fois pour recuperer le contanu d'un canvas
    j'ai ce message d'erreur:
    SystemError: tile cannot extend outside image
    quel est le pb et comment pui-je y remedier.
    Merci d'avance pour votre aide!


    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
    class Image:
        def __init__(self,main):
            self.main=main
            db=Base(self.main.reg)
            db.open()
            self.liste=[r for r in db if r['vue']==self.main.r1]
     
     
            self.main=main
            self.canevas=Canvas(self.main.c1,width=900,height=670,bg='red')
            self.mon_image=PhotoImage(file=self.main.acr_type+'\\'+self.main.r1+'.gif')
            self.canevas.create_image(500,350,image=self.mon_image)
            self.canevas.pack()
            self.canevas.update_idletasks()
     
            for r in self.liste:#positionnement des items sur le canevas
                self.posx=r['x']
                self.posy=r['y']
                self.nbr=r['num']
                self.bouton=Button(self.canevas,text=self.nbr,foreground='white',height=1,width=1,background='black')
     
                self.canevas.create_window(self.posx,self.posy,window=self.bouton
     
     
     
            x = self.canevas.winfo_rootx()
            y = self.canevas.winfo_rooty()
            w = self.canevas.winfo_width()
            h = self.canevas.winfo_height()
            image=ImageGrab.grab((x+2, y+2, x+w-2, y+h-2))
            image.save(self.main.r1+'.bmp')

  2. #2
    Membre chevronné
    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
    Par défaut
    Bonjour,
    Je pense que c'est parce que le Canvas n'est pas encore affiché.
    Essaie comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            self.canevas.after(100,self.getImage)        
        def getImage(self):
            x = self.canevas.winfo_rootx()
            y = self.canevas.winfo_rooty()
            w = self.canevas.winfo_width()
            h = self.canevas.winfo_height()
            image=ImageGrab.grab((x+2, y+2, x+w-2, y+h-2))
            image.save(self.main.r1+'.bmp')

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut
    Super ,ça fonctionne merci.
    Par contre j'obtient une impression du bas de mon écran,comment peut on limiter au contenu seul du canevas?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut
    Je precise que j'ai qu'il y a plusieurs canevas dont je veux recuperer le contenu.
    Ces canevas se trouve dans un canvas avec scrolling et que j'ai appliqué create_window() pour chacun d'eux.
    Merci d'avance

Discussions similaires

  1. [PIL] Changement de résolution d'images
    Par mdriesbach dans le forum Bibliothèques tierces
    Réponses: 1
    Dernier message: 16/12/2009, 09h52
  2. [PIL] Soustraction de 2 images
    Par Pretender47 dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 30/01/2009, 15h15
  3. [PIL] Difference entre deux images
    Par t_om84 dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 26/12/2005, 12h45
  4. [vb.net] [form] background image streched vs tiled
    Par graphicsxp dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/10/2005, 18h32
  5. [Language]Extends : cannot be applied to...
    Par Boumeur dans le forum Langage
    Réponses: 3
    Dernier message: 10/04/2005, 15h49

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