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 :

Sélectionner texte dans HTMLLabel [Python 3.X]


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut Sélectionner texte dans HTMLLabel
    Bonjour à tous,

    Je cherche en vain comment sélectionner du texte dans un widget HTMLLabel (tkhtmlview).

    Sélectionner du texte dans un widget tkinter habituel ne me pose pas de problème et surtout on trouve des exemples en ligne. En revanche, pour ce widget de la bibliothèque tkhtmlview je n'y arrive pas et je ne trouve pas non plus de documentation.

    Voici un exemple :
    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
    import tkinter
    from tkhtmlview import HTMLLabel
     
    class Application(tkinter.Tk):
        def __init__(self):
            tkinter.Tk.__init__(self)
            self.creer_widgets()
     
        def creer_widgets(self):
     
            # widget html_label
            self.html_label1 = HTMLLabel(self, html="""<h3>MERCI de sélectionner le 1er mot de cette phrase.</h3>""",state=tkinter.NORMAL)
            self.html_label1.pack()
     
     
     
    if __name__ == "__main__":
        app = Application()
        app.title("Sélectionner texte dans HTMLLabel")
        app.mainloop()

    Il n'est pas possible de cliquer sur ce widget pour faire apparaitre le curseur. J'ai d'abord pensé qu'il fallait modidier les options et j'ai donc ajouté 'state=tkinter.NORMAL' mais sans résultat.

    D'avance merci à qui pourra m'aiguiller.

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    bonjour
    Citation Envoyé par Chris33 Voir le message
    je ne trouve pas non plus de documentation.
    ? tu as regardé le code source au moins ? Ce n'est qu'un simple tk.Text

    pas possible de cliquer sur ce widget pour faire apparaitre le curseur.
    Oui, encore heureux : tu as choisi délibérément d'utiliser un label et non un texte

    il fallait modidier les options et j'ai donc ajouté 'state=tkinter.NORMAL'
    voir le source ... ce que n'a pas HTMLText

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 759
    Par défaut
    Salut,

    Citation Envoyé par Chris33 Voir le message
    En revanche, pour ce widget de la bibliothèque tkhtmlview je n'y arrive pas et je ne trouve pas non plus de documentation.
    On ne sait pas sélectionner du texte dans un Label tkinter!
    Tous les exemples (que j'ai trouvé) remplacent le widget Label par un widget Entry ou un widget Text.

    Or si on lit lit les sources(*) de tkhtmlview, on constate qu'un HTMLLabel hérite déjà, in fine, d'un tk.Text (et c'est ce que diit aussi la documentation).

    Après ça ne dit pas comment faire... ni que ce sera "simple": si le widget Text utilisé dans HTMLxyz a été codé pour désactiver la sélection, il va falloir trouver comment inhiber cela temporairement ou définitivement. Ce qui demandera de comprendre le "comment" pour imaginer le "pourquoi" et ajouter la fonctionnalité souhaitée.
    C'est bien plus compliqué que remplacer un widget par un autre! Et si personne n'a eu besoin de faire cela et le rendre disponible, vous avez du boulot...

    - W

    (*) la "vraie" documentation.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut
    Sur cette page :https://www.tresfacile.net/afficher-...ec-tkhtmlview/

    je lis ceci : html_label.get_selected_text():Cette méthode retourne le texte sélectionné dans le widget HTMLLabel. Cela peut être utile si vous souhaitez permettre aux utilisateurs de sélectionner et de manipuler le texte affiché.
    ... c'est pourquoi je pense que ça devrait être possible. Cependant, je ne suis pas attaché spécifiquement à ce widget. J'ai essayé également le HTMLScrolledText qui d'ailleurs me conviendrait mieux Sur ce dernier widget, je peux cliquer avec la souris mais toujours pas sélectionner un texte.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 759
    Par défaut
    Citation Envoyé par Chris33 Voir le message
    ... c'est pourquoi je pense que ça devrait être possible.
    Si le widget définissait ce genre de méthode, vous pourriez essayer de l'appeler...(*)
    Elle serait documentée dans la documentation succincte de la bibliothèque (qui dit déjà "All widget classes inherits from the tkinter.Text() base class.").

    Citation Envoyé par Chris33 Voir le message
    Cependant, je ne suis pas attaché spécifiquement à ce widget. J'ai essayé également le HTMLScrolledText qui d'ailleurs me conviendrait mieux Sur ce dernier widget, je peux cliquer avec la souris mais toujours pas sélectionner un texte.
    Un HTMLLabel est déjà un (hérite de) HTMLScrolledText...

    - W
    (*) regarder si (et où) cette méthode est définie dans les sources marche aussi. Tester par vous même est plus accessible/rapide/...
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut
    Rebonjour,

    Pour avoir de l'aide, j'utilise la commande :Effectivement, la méthode ".get_selected_text()" n'y figure pas.
    En revanche, je trouve la méthode selection_get() - Methods inherited from tkinter.Misc

    Sachant également qu'on peut utiliser des tags, je suppose qu'il est possible (pour l'utilisateur) de sélectionner du texte mais que pour cela, il doit y avoir un paramètre à définir. Je note également qu'avec HTMLScrolledText, on peut cliquer dans le widget et faire apparaitre le curseur.


  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 759
    Par défaut
    Citation Envoyé par Chris33 Voir le message
    En revanche, je trouve la méthode selection_get() - Methods inherited from tkinter.Misc
    Faites help(tkinter.Misc.selection_get) pour voir que ça ne vous mène pas très loin...

    Citation Envoyé par Chris33 Voir le message
    Sachant également qu'on peut utiliser des tags, je suppose qu'il est possible (pour l'utilisateur) de sélectionner du texte mais...
    En matière de programmation beaucoup de choses sont possibles... mais dans la réalité, sauf à trouver le code sur Internet, il va falloir l'écrire... ce qui réduit le champ des possibles.

    *edit*: un petit test pour comparer HTMLText et tk.Text montre que la sélection fonctionne (on retourne ce qui a été sélectionné via .selection_get()). Ce qui ne marche pas, c'est la visualisation de la sélection (on ne sait pas ce qui a été sélectionné pour le HTMLText)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38
  2. Texte dans un canevas
    Par Bernard M dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2002, 17h56
  3. Centrer un texte dans un string Grid
    Par christine dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/10/2002, 22h33
  4. taille du texte dans un viewport
    Par pitounette dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/07/2002, 12h06
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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