2010-03-16 4 views
10

J'utilise HyperTreeList de wxPython et je veux définir la largeur de la colonne exactement égale à la longueur de la plus grande chaîne. Pour ce faire, je voudrais convertir une taille de chaîne python en pixels.Comment obtenir la largeur d'une chaîne en pixels?

Par exemple: Si nous avons une chaîne comme

str = "python" 
len(str) = 6 

Comment pourrais-je convertir la longueur chaîne ci-dessus/taille en pixels?

Existe-t-il un autre moyen?

+0

La taille en pixels dépendra de la police que vous utilisez pour afficher la chaîne et la boîte à outils graphiques que vous êtes en utilisant pour rendre la police. Vous allez devoir nous donner plus d'informations avant de pouvoir vous aider. –

+1

J'utilise wxPython HyperTreeList et je veux définir la largeur de colonne exactement égale à la longueur d'une valeur de colonne. En fait, je veux ajuster la taille de la colonne égale à la taille de la plus grande valeur de chaîne dans une colonne. – MA1

Répondre

13

Vous devez faire somethinglike (voir la documentation of wxWidgets pour plus d'infos)

f = window.GetFont() 
dc = wx.WindowDC(window) 
dc.SetFont(f) 
width, height = dc.GetTextExtent("Text to measure") 
+0

utiliser GetColumnFont pour obtenir la police correcte et GetTextExtent pour obtenir la largeur –

10

Cela dépend de la façon dont vous imprimez le texte.

Vous pouvez être intéressé par PIL ImageDraw qui a une méthode textsize. Voir http://effbot.org/imagingbook/imagedraw.htm

Mise à jour: Ceci répondait à la question originale. Il peut sembler un peu hors sujet après les mises à jour des questions.

+1

S'il vous plaît expliquer la downvote. Pour votre information, la réponse originale n'a pas dit que c'était pour WxPython. Devrais-je supprimer cette réponse? – luc

+0

+1 Désolé, n'a pas vu la question originale non éditée, vous avez répondu était alors significatif. –

+0

hmm ne peut pas upvote jusqu'à ce que vous modifiez la réponse :( –

Questions connexes