2010-03-16 82 views
10

我正在使用wxPython的HyperTreeList,我想將列寬設置爲與其中最大字符串的長度完全相等。如何以像素爲單位獲取字符串的寬度?

爲了實現這一點,我想將python字符串大小轉換爲像素。

例如:如果我們有像

str = "python" 
len(str) = 6 

字符串我怎麼能轉換上面的字符串長度/尺寸爲像素?

還有別的辦法嗎?

+0

像素大小將取決於你所使用來顯示字符串的字體和圖形工具,你用於呈現字體。在我們能夠幫助您之前,您將不得不提供更多信息。 – 2010-03-16 14:41:55

+1

我正在使用wxPython HyperTreeList,我想設置列的寬度完全等於列值的長度。 實際上,我想調整列大小等於列中最大字符串值的大小。 – MA1 2010-03-16 14:48:03

回答

13

你必須做somethinglike(見documentation of wxWidgets更多信息)

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

使用GetColumnFont獲取正確的字體和GetTextExtent獲取寬度 – 2010-03-19 11:32:14

10

這取決於您如何打印文本。

您可能也有興趣PIL ImageDraw其中有textsize方法。請參閱http://effbot.org/imagingbook/imagedraw.htm

更新:這回答了原始問題。在問題更新後,它可能看起來有點偏離主題。

+1

請解釋downvote。僅供參考,原始答案並沒有說它是用於WxPython。我應該刪除這個答案嗎? – luc 2010-03-19 13:13:09

+0

+1抱歉,沒有看到原始未經編輯的問題,你的回答是有意義的。 – 2010-03-20 02:59:27

+0

嗯不能upvote,直到你編輯的答案:( – 2010-03-20 02:59:53

相關問題