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 :

affichage pointeur ListBox


Sujet :

Tkinter Python

  1. #1
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut affichage pointeur ListBox
    bonjour

    voila Mon probleme :

    Mon programme initial et pour faire des recherche sur des site spécifique tel que YouTube, Dailymotion, SkreemR, ... et affiché les résultats dans une ListBox. ( sa c'est plutôt simple j'y arrive). Mais maintenant plus dur

    je voudrai que lorsque l'on passe le pointeur de la souris sur une des lignes une fenêtre s'ouvre et affiche les caractéristique de la vidéo avec le résumé qui se trouve sur YouTube (en utilisant YouTube en exemple)
    Et que lorsque on enlève le pointeur de cette ligne la fenetre s'enlève

    Merci de m'aider parce que la je n'est vraiment aucune idée comment faire.
    peut etre que python ne peut pas mais la je serai

  2. #2
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    Mets ta listbox dans un canvas et ajoute des évènements sur des zones de ton canvas. Reste à utiliser ou de chercher dans les tutoriaux de DVP.

    A+
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  3. #3
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut
    Bon j'ai regardé vite fait sur google et bing mais je n'est pas trouvé

    si je cherche 4 heure je vais trouvé mais si tu peut me faire un petit exemple vite fait comme sa sa m'arrangerais

  4. #4
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut
    bon j'opte finalement pour un mixe de se que tu mas dit.
    au lieu de simplement regarde la positions du pointeur je vais simple regarde le simple clic sur un des éléments de ma liste. il ouvrira une autre fenêtre et lorsque je recliqueré sur un autre élément de ma liste la fenêtre va se fermé et ouvrir la nouvelle qui correspond à l'élément

  5. #5
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    Ca marche aussi !

    J'ai fait quelques tests et cela semble un peu plus compliqué avec l'évènement <Enter>. Il ne reconnait pas la zone et le bind ne renvoie qu'un pointer nul.

    Si tu fais un click simple, je ne sais pas pourquoi quand tu cliques sur une zone, il faut que tu cliques une nouvelle fois. Peut-être faut-il rajouter un état. Si on clique une fois, tu fais un clean de ton action, si on clique une deuxième fois, tu fais ton action onSelect.

    Par exemple avec une double click:
    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
     
    # -*- coding: utf-8 -*-
    # Test widget listbox
    from Tkinter import *
     
    def onSelect(e):
        select=listb.get(listb.curselection())
        lab.configure(text=select)
        listb.configure(bg=select)
     
    root=Tk()
    listb=Listbox(root)
    lab=Label(root,text="_")
    listb.pack()
    lab.pack()
     
    # Insertion des éléments dans la liste:
    for  couleur  in  ["gray", "blue", "red", "yellow", "green", "cyan", "seashell2", "ivory", "skyblue", "gold"]:
            listb.insert(END,couleur)
     
    # Un double click dans la liste appellera la fonction onSelect:        
    listb.bind('<Double-1>',onSelect)
     
    root.mainloop()
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  6. #6
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut
    c sur que le problème c'est la sélection de l'élément de la liste avant le clic.
    étant donné que le double clic gauche je l'utilise déjà, je vais finalement utilisé le clic droit. mais le mieux se serré un simple clic gauche ( mais la je trouve pas se qui faut écrire a la place de "<Double-1>"

    en fait le mieux se seré que je te montre mon programme un partie et que je t'explique le tout.
    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
    ...
            # Un double clic dans la liste lancera le téléchargement de la vidéo sélectionner
            self.listTele.bind('<Double-1>',self.Tele_Video)
            # Un clic droit sur un des élément de la liste va ouvrir la nouvelle fenetre avec la description
            self.listTele.bind('<Button-3>', self.AffiheResume_Video)
        def choixSite(self, SITE):
            global YoutubeRecher, indiceSite
            self.entreeRecher=str(self.entreeRecher.get())
            self.SITE=self.CchoixSite_.get()
            if self.SITE == "Youtube":
                self.etat.configure(text="Recherche en cour...")
                indiceSite=1
     
                self.entreeRecher=self.entreeRecher.replace(" ", "+")
                self.YoutubeRecher="http://www.youtube.com/results?search_type=&search_query="+self.entreeRecher+"&aq=f"
                self.VideoCher()
     
        def VideoCher(self):
            global Lurlvideo_, LtVideo_
            if indiceSite==1:
                Source=urllib2.urlopen(self.YoutubeRecher).read()
                Lurlvideo_= []
                VURLF=0
                while 1:
                    try:
                        VURLD=Source.index('<a id="video-url-',VURLF)
                        VURLF=Source.index('" href="', VURLD)
                        Lurlvideo_.append(Source[VURLD+17:VURLF])
                        VURLD=VURLF
                    except: break
                LtVideo_=[]
                VURLTD=0
                while 1:
                    try:
                        VURLTD=Source.index('"   rel="nofollow"><img title="', VURLTD)
                        VURLTF=Source.index('"    src="', VURLTD)
                        LtVideo_.append(Source[VURLTD+31:VURLTF])
                        VURLTD=VURLTF
                    except: break
                self.etat.configure(text="Fin de la recherche", fg='blue')
                self.affiche_site()
     
        def affiche_site(self):
            listedessites="http://www.youtube.com/watch?v="+Lurlvideo_[1]+"         "+LtVideo_[1]
            self.listTele.insert(END, listedessites)
            for sites in range(len(LtVideo_)-1):
                listedessites="http://www.youtube.com/watch?v="+Lurlvideo_[sites+1]+"         "+LtVideo_[sites+1]
                self.listTele.insert(END,listedessites)
     
        def Tele_Video(self, e):
            global Selection
            Selection=self.listTele.get(self.listTele.curselection())
            Selection=Selection[:41]
            t1=Thread_Telechar(self)
            t1.start()
     
        def AffiheResume_Video(self, e):
            def Fenetre():
                global fen, a
                a=1
                def destroy():
                    fen.destroy()
                    a=0
                fen=Tk()
                Label(fen, text=Resume, bg='light green').pack()
                Button(fen, text='Quitter', command=destroy).pack(side=BOTTOM)
                fen.mainloop()
            Selection=self.listTele.get(self.listTele.curselection())
            Selection=Selection[:41]
            print Selection
            Source=urllib2.urlopen(Selection).read()
            ResumD=Source.index('<span  class="description">')
            ResumF=Source.index('</span>', ResumD)
            Resume=Source[ResumD+27:ResumF]
            if a==1:
                destroy()
            else:
                Fenetre()


    voila je sais c'est long mais ce n'est qu'une partie trés limité.
    voila mon projet et de développer un programme dans lequel on peut rechercher des videos ou musique et spécifiant le site et ensuite (je sais pas trés légal ) les télécharger.
    Il n'y que la parti recherche sur YouTube pour l'instant. et j'ai un petit problemme lors de l'affichage des adresse et des noms. au bout d'un certain point il y un décalage d'une ligne qui se fait. (mais ce n'est pas le problemme actuel)
    la partie qui t'intéresse c'est :
    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
    def AffiheResume_Video(self, e):
            def Fenetre():
                global fen, a
                a=1
                def destroy():
                    fen.destroy()
                    a=0
                fen=Tk()
                Label(fen, text=Resume, bg='light green').pack()
                Button(fen, text='Quitter', command=destroy).pack(side=BOTTOM)
                fen.mainloop()
            Selection=self.listTele.get(self.listTele.curselection())
            Selection=Selection[:41]
            print Selection
            Source=urllib2.urlopen(Selection).read()
            ResumD=Source.index('<span  class="description">')
            ResumF=Source.index('</span>', ResumD)
            Resume=Source[ResumD+27:ResumF]
            if a==1:
                destroy()
            else:
                Fenetre()
    cela me renvoi une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "C:\Program Files\python 2.5.4\Lib\lib-tk\Tkinter.py", line 1414, in __call__
        return self.func(*args)
      File "C:\Users\valerie\Desktop\ALLFILES-T.py", line 143, in AffiheResume_Video
        ResumD=Source.index('<span  class="description">')
    ValueError: substring not found
    pourtant <span class="description"> existe dans la source de la page de la video. peut cette erreur est t'elle lié au décalage de l'affichage dans ma liste. je ne s'est pas encore

    voila si tu peut m'aider sa serré très sympa de ta part

  7. #7
    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,
    mais le mieux se serré un simple clic gauche ( mais la je trouve pas se qui faut écrire a la place de "<Double-1>"
    '<ButtonRelease-1>'

  8. #8
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Par défaut
    lol jpensé pas que cette simple command auré réglé presque tous mes problèmes !

    merci a toi !

  9. #9
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    Je n'avais cherché que du côté <Button-1> et cela ne marchait pas vraiment. J'aurais appris un truc
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

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

Discussions similaires

  1. Mauvais affichage dans listBox
    Par moilou2 dans le forum IHM
    Réponses: 30
    Dernier message: 16/03/2008, 19h19
  2. affichage de listbox
    Par yedid dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/10/2007, 07h43
  3. [C# 2.0] probleme d'affichage de listbox
    Par maniolo dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/11/2006, 14h20
  4. Affichage Pointeur
    Par fanC++ dans le forum C++Builder
    Réponses: 1
    Dernier message: 03/05/2005, 12h23
  5. [VB.NET] Probleme d'affichage entre ListBox/TextBox
    Par Monster77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2004, 11h02

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