views:

151

answers:

2

I am using wxPython's HyperTreeList and I want to set the column width exactly equal to length of the largest string in it.

To accomplish that, I'd like to to convert a python string size into pixels.

For Example: If we have a string like

str = "python"
len(str) = 6

How could I convert the above string length/size into pixels?

Is there another way?

A: 

It depends on how you are printing the text.

You may be interested by PIL ImageDraw which has a textsize method. See http://www.pythonware.com/library/pil/handbook/imagedraw.htm

Update: This was answering the original question. It may looks a little off-topic after question updates.

luc
Please explain the downvote. FYI, the original answer didn't say that it was for WxPython. Should I delete this answer?
luc
+1 sorry, didn't see the orginal unedited question, you answer was meaningful then.
Anurag Uniyal
hmm can't upvote until you edit the answer :(
Anurag Uniyal
+5  A: 

You'll have to do something like (see the documentation of wxWidgets for more info)

f = window.GetFont()
dc = wx.WindowDC(window)
dc.SetFont(f)
width, height = dc.GetTextExtent("Text to measure")
voyager
use GetColumnFont to get correct font and GetTextExtent to get width
Anurag Uniyal