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 :

TEXT et création de lien hypertexte


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 27
    Points
    27
    Par défaut TEXT et création de lien hypertexte
    Bonsoir,
    Dans un formulaire, je complète sans problème une zone "Description" (format Text : Description=Text(FenetreDescription, width=50, height=10, font ="Times 12")).
    Mais, je souhaiterais insérer des liens hypertextes. Est-ce possible, s'il vous plait?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def SaisieLienDisque():                               # Sélection du fichier et insertion du nom dans le texte
        print ("demande Disque Dur")
        DisqueDur = tkinter.filedialog.askopenfilename(title ="Sélectionner le fichier : " , \
                 filetypes = [("All", "*")])
        if len(DisqueDur) > 0:
            print ("vous avez choisi le fichier : "+(DisqueDur))
            zonetemporaire = os.path.abspath(DisqueDur)   
        Description.insert(END,"<a href="+os.path.abspath(DisqueDur)+'", target=blank>'+os.path.abspath(DisqueDur)+'</a>')
    Problème : je sèche!, le résultat inséré étant, littéralement :
    <a href=J:\Python\En cours de creation\zephir.py", target=blank>J:\Python\En cours de creation\zephir.py</a>, non cliquable.

    Existe-t-il une solution, SVP?
    Merci d'avance
    Bon week-end
    Luc

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    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 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Salut,

    Il va falloir discuter "design". Imaginez un texte, à la base c'est une suite de caractères qu'on pourra insérer dans le widget Text via .insert('end', text).
    Comment associer à certaines parties du texte des attributs spéciaux comme:
    head1, head2, paragraph, hyperlink,... ?

    Ca se fait en 3 temps en associant:
    1. un "tag" aux parties du texte ayant cet attribut,
    2. des propriétés (font, couleurs,...) au "tags",
    3. des événements aux tags qui déclencheront des actions.

    Un click sur une portion de texte taggué "hyperlink" devra récupérer l'URL associé au texte et ouvrir l'URL.

    La dernière difficulté est que le texte étant une sorte d'HTML, la suite de caractères contient les instructions de mise en page et d'actions associées. Si on a: "veuillez consulter le <A href="http://www.w3.org/">site Web du W3C</A>", il faudrait que le rendu soit "veuillez consulter le site Web du W3C: la balise HTML <A>....</A> n'est pas affichée mais "interprétée".

    Le widget Text de Tk ne sachant pas interpréter du HTML, il faut "coder" pour que çà fonctionne. Mais c'est vous qui avez pensé que le widget Text de Tk savait interpréter du HTML. Il ne le sait pas mais est ce indispensable pour ce que vous voulez faire? Et est ce que le widget Text est le plus approprié pour afficher et agir sur l'information?

    D'autres GUI comme Qt et Gtk ont des widgets qui savent afficher du HTML et ils intègrent un navigateur Web basé sur Webkit qui permet d'afficher des pages HTML construites par des serveurs Web.

    Ce genre de fonctionnalités n'existe pas avec Tk.
    - W
    PS: Vu l'évolution des serveurs Web en serveurs d'application Web, cela n'a aucune importance puisqu'on peut de plus en plus construire des applications avec des toolkits graphiques classiques tels que Tk qui peuvent faire des requêtes HTTP pour récupérer non plus des "pages Web" mais l'état de ressources sous la forme de JSON ou de XML. A partir de là, le navigateur Web n'est plus que l'interface par défaut. Et si vous voulez construire une application en intégrant plusieurs services Web "côté client", un toolkit graphique classique a de nombreux atouts.

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Littéralement (TEXT et création de lien hypertexte):
    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
    import tkinter as tk
    import webbrowser
     
     
    root = tk.Tk()
    root.title("tkinter.Text sample")
    t = tk.Text(root)
    t.insert(tk.END, " Exemple de lien html avec tkinter et webbrowser.\n")
    t.insert(tk.END, " Voir ")
    #
    href = "http://www.developpez.net/forums/d1244499/autres-langages/python-zope/gui/tkinter/mettre-interface-graphique-sous-format-pdf/"
    t.insert(tk.END, "ici", 1)
    t.tag_config(1, foreground="blue")
    t.tag_bind(1, '<Button-1>', lambda e: webbrowser.open(href, new=0, autoraise=True))
    #
    t.insert(tk.END, " par exemple.")
    t.pack()
    tk.Button(root, text="Quit", command=root.destroy).pack()
    root.mainloop()
    Ce qui correspond à
    Citation Envoyé par wiztricks Voir le message
    Ca se fait en 3 temps en associant:
    1. un "tag" aux parties du texte ayant cet attribut,
    2. des propriétés (font, couleurs,...) au "tags",
    3. des événements aux tags qui déclencheront des actions.
    Mais cela ne correspond pas à la question.
    Citation Envoyé par vieux60ans Voir le message
    Problème : je sèche!, le résultat inséré étant, littéralement :
    <a href=J:\Python\En cours de creation\zephir.py", target=blank>J:\Python\En cours de creation\zephir.py</a>, non cliquable.
    Que voulais vous faire avec J:\Python\En cours de creation\zephir.py et avez vous vraiment besoin d'un lien hypertext pour cela ?
    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
    21
    22
    23
    24
    25
    26
    27
    import tkinter as tk
    import sys
     
     
    def affiche(e):
        top = tk.Toplevel(root)
        top.title("View")
        text = tk.Text(top)
        with open(sys.argv[0], "r") as fp:
            text.insert(tk.END, fp.read())
        text.pack()
     
     
    root = tk.Tk()
    root.title("tkinter.Text sample")
    t = tk.Text(root)
    t.insert(tk.END, " Text et les tags.")
    t.insert(tk.END, " Voir le ")
    #
    t.insert(tk.END, "code", 1)
    t.tag_config(1, foreground="blue")
    t.tag_bind(1, '<Button-1>', affiche)
    #
    t.insert(tk.END, ".")
    t.pack()
    tk.Button(root, text="Quit", command=root.destroy).pack()
    root.mainloop()
    @+

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 27
    Points
    27
    Par défaut
    Bonsoir wiztricks, bonsoir PauseKawa,

    Je vous remercie pour vos conseils.

    Quelques réponses à vos interrogations (légitimes), en utilisant ma méthode favorite : avec une numérotation (cela m'aide à réfléchir) :

    1 - J'apprends Python grâce à vos conseils et au livre "Apprendre à programmer avec Python 3" de Gérard Swinnen. Ce livre s'appuie sur Tkinter et Sqlite 3.

    2 - Mais c'est vous qui avez pensé que le widget Text de Tk savait interpréter du HTML : au vu du point 1 ci-dessus, j'essaie, au maximum, d'utiliser les outils présentés, surtout qu'ils sont intégrés, par "défaut", à Python. Maintenant, s'il faut choisir un autre module : aucun problème. Mais je souhaiterais, si possible, ne pas me disperser. Donc, faut-il continuer avec Tkinter? Si Non, quel module me conseillez-vous, s'il vous plait, (d'autant que je dois créer, ensuite, la partie "impression")?

    3 - Que voulais vous faire avec J:\Python\En cours de creation\zephir.py et avez vous vraiment besoin d'un lien hypertext pour cela ? (J:\Python\... il s'agit d'un lien donné uniquement comme exemple). A titre d'exercice : une base de données de recettes de cuisine. Mon épouse aime Internet, mais est réfractaire à l'informatique (je lui ai acheté plusieurs logiciels. Réponse : trop compliqué!). Donc, je souhaite créer un formulaire de deux zones : Titre de la recette et Description. La zone Description pourrait contenir, au choix, mots clés, contenu de la recette, références d'une revue, lien vers le recette sur Internet ou sur le disque dur, etc.

    Encore mille mercis pour votre aide

    Cordialement

    Luc

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    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 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Salut,

    Je souligne les paragraphes qui me semblent important côté programmation.

    Citation Envoyé par vieux60ans Voir le message
    Donc, je souhaite créer un formulaire de deux zones : Titre de la recette et Description. La zone Description pourrait contenir, au choix, mots clés, contenu de la recette, références d'une revue, lien vers le recette sur Internet ou sur le disque dur, etc.
    Pourquoi ne pas réaliser cela avec une Frame contenant des widgets Label, Entry, Text,... Il pourrait y avoir un bouton "vidéo sur Internet" qui démarre l'application affichant la video YouTube ou le chef montre comment il fait.
    Vous pouvez structurer les informations à présenter en organisant le code de l'application. On peut aussi mettre tout cela en tas dans un widget Text et gérer les segments modifiables ou pas, associés à des liens hypertexte,...
    Le code ne sera pas forcément plus gros, mais il faudra reconstruire des abstractions au dessus des tags pour réaliser des fonctionnalités semblables à Label, Entry,...

    Donc, faut-il continuer avec Tkinter? Si Non, quel module me conseillez-vous, s'il vous plait, (d'autant que je dois créer, ensuite, la partie "impression")?
    Dans votre cas rien ne rend nécessaire l'utilisation d'un autre GUI. Vous débutez. Apprendre comment réaliser ce genre de fonctionnalités en "composant" les bons widgets Tk.

    Changez de GUI donnera plus de choix sur le "comment". Il faudra toujours apprendre à composer et il y aura encore plus de widgets!

    - W

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Pour répondre à votre (légitime) question sur le choix du GUI : Le Widget Text, de pars sa fonction, est le plus 'compliqué' sous Tkinter. Vous arrivez donc à la fin de votre formation sur ce GUI et vos prochaines interrogations seront sur les méthodes de la classe Misc (Gestion des événements etc...). Pourquoi ne pas rester sur de l’acquis ?

    Si votre compagne est si réfractaire pourquoi ne pas lui demander ce qu'elle souhaite ? L'exercice du papier/stylo avec "je veux taper cela ici avec le résultat là" ou vous devrez appliquer ce que vous avez appris et bien plus périlleux qu'un tuto.

    Pour ce qui est de l'impression c'est os dépendant et le Widget Text n'est pas le plus adapté pour cela (c'est le Canvas via Canvas.postscript()).

    @+

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 27
    Points
    27
    Par défaut
    Bonjour wiztricks, bonjour PauseKawa,

    Est-il prévu une boite d'aspirine pour les débutants, s'il vous plait ?

    Au vu de l'ensemble de vos conseils, je vais :
    1 - Re-discuter avec mon épouse

    2 - En attendant, changer d'exercice : création d'une base pour mes travaux et mes créations de poteries (passion = céramique)

    3 - Ce changement d'exercice me permettra d'appliquer tous les conseils que vous m'avez donné (frame, bouton "vidéo", Canvas.postscript(), etc).

    Encore mille mercis
    Luc

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    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 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Citation Envoyé par vieux60ans Voir le message
    Est-il prévu une boite d'aspirine pour les débutants, s'il vous plait ?
    Apprendre passe souvent par des "prise de tête"!
    Comme l'a remarqué PauseKawa, Text et Canvas sont les widgets les plus compliqués car vous pouvez presque faire n'importe quoi avec - Button, Label, Entry sont "simplissimes".
    Ceci dit, ce "compliqué" n'est pas du à Tk mais aux widgets eux mêmes: c'est encore plus compliqué avec d'autres GUI.
    Courage,
    - W

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 27
    Points
    27
    Par défaut
    Bonjour wiztricks,

    Merci pour vos encouragements. Je ne laisserais pas tomber.

    Cordialement

    Luc

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/03/2014, 15h44
  2. [XL-2013] VBA création de lien hypertexte
    Par Jynno22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/11/2013, 21h53
  3. création de lien hypertexte
    Par nutopia dans le forum Outlook
    Réponses: 0
    Dernier message: 19/04/2012, 11h23
  4. [WD-2002] Récupération du texte d'affichage des liens hypertexte
    Par taratata_69 dans le forum VBA Word
    Réponses: 2
    Dernier message: 06/07/2009, 12h12
  5. [E 03] Création de liens hypertexte
    Par ogho4326 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/01/2009, 14h40

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