2010-03-16 3 views
10

Sto usando wxPython's HyperTreeList e voglio impostare la larghezza della colonna esattamente uguale alla lunghezza della stringa più grande in essa contenuta.Come ottenere la larghezza di una stringa in pixel?

Per ottenere ciò, mi piacerebbe convertire una dimensione di stringa python in pixel.

Per esempio: se abbiamo una stringa come

str = "python" 
len(str) = 6 

Come avrei potuto convertire il sopra stringa di lunghezza/dimensioni in pixel?

C'è un altro modo?

+0

La dimensione in pixel dipenderà dal tipo di carattere che si sta utilizzando per visualizzare la stringa e il set di strumenti grafici che sei usando per rendere il font. Dovrai darci ulteriori informazioni prima di poterti aiutare. –

+1

Sto usando wxPython HyperTreeList e voglio impostare la larghezza della colonna esattamente uguale alla lunghezza di un valore di colonna. In realtà, voglio regolare la dimensione della colonna uguale alla dimensione del più grande valore di stringa in una colonna. – MA1

risposta

13

Dovrete fare somethinglike (si veda la documentation of wxWidgets per ulteriori informazioni)

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

utilizza GetColumnFont per ottenere il carattere corretto e GetTextExtent per ottenere larghezza –

10

Dipende da come si stampa il testo.

Potresti essere interessato a PIL ImageDraw che ha un metodo textsize. Vedi http://effbot.org/imagingbook/imagedraw.htm

Aggiornamento: questa era la risposta alla domanda originale. Potrebbe sembrare un po 'fuori tema dopo gli aggiornamenti delle domande.

+1

Si prega di spiegare il downvote. Cordiali saluti, la risposta originale non ha detto che fosse per WxPython. Dovrei cancellare questa risposta? – luc

+0

+1 scusate, non ho visto la domanda originale inedita, la vostra risposta è stata significativa allora. –

+0

hmm non può andare avanti fino a quando non modifichi la risposta :( –