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 :

[Tkinter] Problèmes de noob


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut [Tkinter] Problèmes de noob
    Bonjour,

    Je réalise un pseudo navigateur web en Python où j'affiche le code source dans un Tkinter.Text. J'utilise HTMLParser.
    Après plusieurs recherches sur ce forum et sur google, je n'ai pas trouvé de réponses à les 3 questions suivantes:

    1°)Comment afficher une image dans un bouton? J'ai trouvé le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    img = Tkinter.PhotoImage(file = 'image.gif') 
    bt = Tkinter.Button(master, image=img, command=cmd) 
    bt.pack()
    Le bouton prend la taille de l'image mais il reste gris...

    2°)J'essaie d'afficher plusieurs images dans mon Tkinter.Text mais seule la dernière s'affiche.. Voici un extrait du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.textNavigateur.image_create(END, image=self.img)
    avec self.img étant une Tkinter.PhotoImage

    3°)Question compliquée que je ne vais pas forcément bien formuler. Dans mon Tkinter.Text j'affiche les liens soulignés et bleus, en utilisant les "tag" de TKinter.Text. Je bind le tag avec une méthode me permettant d'accéder au lien. Seulement tous les liens me mènent à la même URL et c'est logique puisque à chaque fois que je rencontre l'attribut "href" dans ma page html, j'affecte l'URL à un attribut de classe "self.lien". Seulement je ne vois pas trop comment faire autrement...

    Voilà c'est tout, c'est dur pour un lundi matin

    Balises Code rajoutées par Guigui_

  2. #2
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 55
    Par défaut
    Salut,

    Les problemes 1 & 2 sont identiques.

    Quand tu manipules des (+ de 1) images, il faut, apres avoir créé ton widget contenant une image, affecter (reelement) l'image au widget... Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    label=Tkinter.Label(myframe,image=self.image_to_use)
                    label.image=self.image_to_use
                    label.grid(row=0,column=0)
    Ici j'ai créé un label avec une image (self.image_to_use, créée via PhotoImage)... ensuite j'ai affecté cette image au label (2eme ligne)...

    Qaund tu n'as qu'une image, ou un nom different pour chaque image tu n'as pas ce probleme (qui est lié aux références si je ne m'abuse)

    Pour ton probleme 3, peux tu etre un peu plus clair? j'ai pas tout compris.

    Voila.

    JC

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut
    Tout d'abord merci d'avoir répondu aussi vite, c'est impressionant
    Alors je vais répondre en 2 messages (je suis comme ça moi lol):

    1°) et 2°):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    label=Tkinter.Label(myframe,image=self.image_to_use)
    label.image=self.image_to_use
    label.grid(row=0,column=0)
    Ca m'étonne c'est pas redondant? et la 2e ligne ca serait pas plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    label.config(image=self.image_to_use)
    Ce n'est pas que je doute mais je suis au boulot, je ne peux pas essayer

    Mais encore merci!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut
    pour 3°):
    J'étais persuadé de ne pas être clair lol
    Le mieux c'est que je mette mon pseudo-code (de tête):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    text.tag_config("a", foreground="blue", underline=1)
    text.tag_bind("a", "<Button-1>", goLink)
    text.config(cursor="arrow")
    Ca c'est le code pour mon Tkinter.Text qui permettre de mettre en forme les liens et de les binder avec la méthode goLink.

    Dans mon HTMLParser, à chaque fois que je trouve le tag "a" (tag html pour les liens), je fais en gros:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    start_atag(self,tag,attrs):
     self.link=dict(attrs['href']) #ici que doit se situer mon problème puisque je l'écrase à chaque fois que je trouve le tag "a" dans ma page html
     self.monTkinterText.insert(END,"leLienMachin","a")
    Evidemment, tous les liens ayant le même tag lançant la même méthode, j'atterris toujours sur le même lien... en l'occurence le dernier de la page html...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut
    Je crois avoir trouvé une solution pour ma question 3°), bien que ne pouvant la tester immédiatement:

    Je crée un nouveau tag Tkinter.Text à chaque nouveau lien, avec le bind qui convient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    text.tag_config("a"+self.nbTagA++)
    text.tag_bind("a"+self.nbTagA, "<Button-1>", lambda 
    			event, arg1=urlDuLienQueJeTraite : 
    			self.goLink(event, arg1))
    C'est une bonne voie à votre avis?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut
    Personne n'a d'idées pour ma question 3°)?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Par défaut
    Bon je ne fais que répondre à moi même, mais j'ai pu tester mon idée hier soir et c'est bien la bonne. Par contre, je n'ai pas eu le temps de tester les propositions pour les questions 1°) et 2°), donc je ne clos pas le topic immédiatement.

Discussions similaires

  1. Tkinter le fond de mes fenetres sont blanches !
    Par darioo2 dans le forum Tkinter
    Réponses: 0
    Dernier message: 18/10/2010, 07h44
  2. Réponses: 1
    Dernier message: 05/02/2007, 13h27
  3. que deviennent mes accents ?!
    Par petitdns dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2002, 09h32
  4. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  5. Stocker mes données
    Par Le Fou dans le forum C++Builder
    Réponses: 23
    Dernier message: 05/07/2002, 15h02

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