2008-12-03 21 views

cevap

2

Yazı tiplerinin çoğunun orantılı olduğunu, yani her karakterin farklı bir genişliğe sahip olabileceği anlamına gelir. WWW ve lll'in her ikisi de 3 karakterdir, ancak çok farklı boyutlarda metin kutusu gerektirir. Courier gibi bazı fontlar, sabit genişlikte olacak şekilde tasarlanmıştır ve bu problemi olmayacaktır. Ne yazık ki, metin kutusunda hangi yazı tipinin seçili olduğuna dair kontrolünüz olmayabilir.

Yine de bunu denemek istiyorsanız, anahtarın bir karakterin genişliğini piksel cinsinden almak, karakter sayısıyla çarpmak ve ardından karakterlerin kenarlıkları için bir miktar dolgu eklemek. LITB anlaşılacağı gibi,

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

ya:: Bu olmak için iyi bir başlangıç ​​noktası bulabilir

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

3

bir yolu olmalı görünmüyor. Bununla birlikte, wxWindow::GetTextExtent'u kullanabilirsiniz. Bu C++ kodu, ama kolayca wxPython uyarlanabilir:

Bu
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(); 

, sen bazı küçük değer katarak, (yazı tipleri değişken genişlik karakterler olabilir) ve düzgün çarpın makul genişlik karakterinin boyutunu almak yerel dolgu için hesap (say, 10px).

İlgili konular