Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Bibliothèques tierces
Bibliothèques tierces Forum d'entraide pour les autres bibliothèques non présentes dans la distribution standard de Python
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/02/2012, 14h25   #1
ryced
Invité régulier
 
Inscription : octobre 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 26
Points : 9
Points : 9
Par défaut [pyCairo] Donner des identifiants aux éléments exportés en SVG

Bonjour,

Je développe un programme qui permet de générer un graphique à l'écran et de l'exporter au format SVG. Pour cela, j'utilise pyCairo.
Je souhaiterais utiliser ce code SVG dans un site web (je l'intègre dans du code HTML5 - jusque là tout va bien), mais pour plus de convivialité, j'aimerai enrichir ce SVG avec des popups qui apparaitraient au passage de la souris.
Pour cela, j'ai besoin d'accéder aux différents <path> du SVG (pour rajouter des "onmouseover" par exemple).
Malheureusement, tels qu'il est exporté par pyCairo, le SVG a des <path> sans "id". Impossible de les distinguer les un des autres !

S'il vous plait : dites moi qu'il y a une solution facile !!
ryced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2012, 20h07   #2
VinsS
Membre Expert
 
Homme
Inscription : octobre 2008
Messages : 973
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2008
Messages : 973
Points : 1 455
Points : 1 455
Salut,

Et ouvrir et réenregistrer dans un logiciel de dessin vectoriel ?

J'utilise Inkscape où les paths ont effectivement une 'id'.
__________________
Vincent
Oqapy . Qarte . PaQager
VinsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2012, 11h08   #3
ryced
Invité régulier
 
Inscription : octobre 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 26
Points : 9
Points : 9
Citation:
ouvrir et réenregistrer dans un logiciel de dessin vectoriel ?
Non, ce doit être fait automatiquement par mon logiciel, lors de la création du graphique...

Mais merci quand même pour la réponse.
ryced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2012, 17h41   #4
VinsS
Membre Expert
 
Homme
Inscription : octobre 2008
Messages : 973
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2008
Messages : 973
Points : 1 455
Points : 1 455
Ce n'est pour autant pas impossible, dans le cas d'Inkscape justement.

On peut l'utiliser en ligne de commande et donc via subprocess().

Voir le man d'inkscape.
__________________
Vincent
Oqapy . Qarte . PaQager
VinsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 18h32   #5
ryced
Invité régulier
 
Inscription : octobre 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 26
Points : 9
Points : 9
Il aura fallu du temps pour que ça murisse, mais je vais enfin pouvoir classer cette discussion dans la catégorie [résolu].

Voici comment j'ai procédé, ça peut paraitre tordu, mais ça fonctionne comme je le souhaitais.

1) Au moment de dessiner les objets à rendre "interactifs" (surbrillance, lien, popup), je relève un point caractéristique du rectangle qui constitue l'objet, ou bien je crée un rectangle "transparent".

Les coordonnées de point caractéristique apparaissent "en clair" dans le fichier .svg. Il suffit alors :
2) de parser le document :
Code :
1
2
from xml.dom.minidom import parse
        doc = parse(fichier.svg)
3) de rechercher parmi tous les éléments svg de type ceux qui commencent par les coordonnées des points caractéristiques des objets à rendre "interactifs".

4) et en manipulant ces éléments SVG on peut faire plein de choses :
rajouter des filtres, des attributs du type "onmouseover", des liens hypertexte .......

5) et bien sûr, il faut sauvegarder tout çà avec un petit Résultat : si on fait ça au moment de sauvegarder le fichier .svg, c'est complètement transparent pour l'utilisateur.



Je pense que le "langage" SVG mériterait une rubrique à part entière chez Developpez.com.

A la prochaine.
ryced est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h41.


 
 
 
 
Partenaires

Hébergement Web