2008-12-03 14 views

回答

2

認識到大多數字體是成比例的,這意味着每個字符可能採取不同的寬度。 WWW和lll都是3個字符,但它們需要大小不同的文本框。一些字體,如Courier,被設計爲固定寬度,不會有這個問題。不幸的是,您可能無法控制文本框中選擇哪種字體。

如果您仍想嘗試此操作,關鍵是以像素爲單位獲取字符的寬度,將其乘以字符數,然後爲字符周圍的邊框添加一些填充。您可能會發現這是一個很好的起點:

http://docs.wxwidgets.org/stable/wx_wxdc.html#wxdcgetpartialtextextents

,或者作爲litb建議:

http://docs.wxwidgets.org/2.4/wx_wxwindow.html#wxwindowgettextextent

3

似乎沒有成爲一個方式。但是,您可以使用wxWindow::GetTextExtent。這是C++代碼,但可以很容易地適應的wxPython:

int x, y; 
textCtrl->GetTextExtent(wxT("T"), &x, &y); 
textCtrl->SetMinSize(wxSize(x * N + 10, -1)); 
textCtrl->SetMaxSize(wxSize(x * N + 10, -1)); 

/* re-layout the children*/ 
this->Layout(); 

/* alternative to Layout, will resize the parent to fit around the new 
* size of the text control. */ 
this->GetSizer()->SetSizeHints(this); 
this->Fit(); 

這是,則採取合理的寬度字符的大小(字體可以具有可變寬度字符)並適當相乘,加入一些小的值,以說明本地填充(例如10px)。