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 :

Canvas-texte en diagonale


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 27
    Par défaut Canvas-texte en diagonale
    Bonsoir,

    J'ai crée une classe qui me génère des histogrammes en fonction du résultat que me ramène une requete SQL.
    En fonction du nombre de row qui me reviennent de la requete, je risque de me trouver devant un problème sur l'affichage des valeurs au dessus des barres (voir fichier joint).
    S'il y a beaucoup de barre, il risque d'y avoir un chevauchement des valeurs.

    Je voudrais savoir s'il est possible d'incliner un texte sur un canvas avec la méthode create_text, et ceci pour gagner de la place.

    Pourriez-vous m'éclairer?

    Merci
    Images attachées Images attachées  

  2. #2
    Membre Expert 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
    Par défaut
    Bonjour,

    Utiliser width ?

    @+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 27
    Par défaut
    Merci de ta patience l'ami.

    L'idée du width n'est pas mauvaise, mais elle me génère des retours à la ligne qui ne sont pas de plus bel effet (voir fichier)

    Je continue mes recherches.
    Merci
    Images attachées Images attachées  

  4. #4
    Membre Expert 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
    Par défaut
    Bonsoir,

    En gros tu te retrouve avec un string du style '139 12.59'
    C'est cela ?

    Dans ce cas pourquoi ne pas faire ton width sur la plus grande valeur d'un len de ton string ? Tu fais :
    monstring = '139 12.59'
    mestring = monstring.split()
    Puis tu teste la liste mestring (for trucs in mestring...) pour trouver la plus grande valeur (maxstring par exemple) du len(de trucs) que tu applique avec un width=maxstring*3 (Par contre pour le *3 je pense que ce n'est pas très universel. A voir avec les polices de caractères ... Je suis sur qu'il vas falloir jouer sur cela.)

    C'est juste l'idée du soir

    @+

  5. #5
    Membre Expert 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
    Par défaut
    Bonsoir,

    Pas convaincu par le width ?

    Alors si tu connais le nombre max de caractère :

    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
    >>> def aligne(texte):
    ...     retourtexte=''
    ...     count = 0
    ...     for caract in texte:
    ...         count += 1
    ...         if count > 4:
    ...             retourtexte = retourtexte + caract + '\n'
    ...             count=0
    ...         else:
    ...             retourtexte = retourtexte + caract
    ...     return retourtexte
    ... 
    >>> fen = Tk()
    >>> c=Canvas(fen, height=200,width=200)
    >>> c.pack()
    >>> c.create_text(100, 100, text=aligne('Vertical'))
    @+

  6. #6
    Membre Expert 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
    Par défaut
    Ma courge attitude...

    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
    from Tkinter import *
     
    def aligne(texte):
        retourtexte=''
        count = 0
        maxlong=0
        mestring = texte.split(' ')
        for mots in mestring:
            if len(mots) >= maxlong:
                maxlong=len(mots)
        maxlong += 1
        for mots in mestring:
            retourtexte =  retourtexte + '\n' + ' '*maxlong*3 + mots
            maxlong -= 1
        return retourtexte
     
    fen = Tk()
    c=Canvas(fen, height=400,width=400, bg='white')
    c.pack()
    c.create_text(150, 150, text=aligne('139 129 555 155 557'), justify=CENTER)
    fen.mainloop()
    @+

    Edit puisque j'ai le temps... Ajout de la diagonale

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 27
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Bonsoir,

    Pas convaincu par le width ?
    Non, non rien de tout cela...j'ai bien vu ton message mais je n'ai pas eu le temps de mettre en pratique.

    Boulot, boulot.

    Promis, je m'y colle ce week-end.
    Merci bcp pour ton intérêt.

Discussions similaires

  1. Text vertical dans Tkinter canvas text
    Par jcgarreau dans le forum Tkinter
    Réponses: 4
    Dernier message: 15/08/2009, 00h29
  2. Ecrire du texte en diagonale
    Par sardik dans le forum Qt
    Réponses: 2
    Dernier message: 06/04/2009, 14h48
  3. [2.0] Texte en diagonale
    Par Rodie dans le forum ASP.NET
    Réponses: 4
    Dernier message: 02/02/2007, 12h58
  4. Canvas et Texte vertical
    Par ulysse66x dans le forum Composants VCL
    Réponses: 8
    Dernier message: 01/02/2004, 16h46

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