Tôi có một TextCtrl
trong chương trình wxPython và tôi muốn đặt chiều rộng của nó thành chính xác 3 ký tự. Tuy nhiên, cách duy nhất để đặt kích thước của nó theo cách thủ công chỉ chấp nhận số pixel. Có cách nào để chỉ định ký tự thay vì pixel không?Đặt chiều rộng của một văn bản wxPython TextCtrl ở số ký tự
Trả lời
Nhận ra rằng hầu hết các phông chữ đều tỷ lệ thuận, có nghĩa là mỗi ký tự có thể có chiều rộng khác nhau. WWW và lll đều có 3 ký tự, nhưng chúng sẽ yêu cầu kích thước khác nhau của hộp văn bản. Một số phông chữ, chẳng hạn như Courier, được thiết kế để có chiều rộng cố định và sẽ không có vấn đề này. Rất tiếc, bạn không thể kiểm soát phông chữ nào được chọn trong hộp văn bản.
Nếu bạn vẫn muốn thử điều này, điều quan trọng là lấy chiều rộng của một ký tự bằng pixel, nhân với số ký tự, sau đó thêm một số đệm cho đường viền xung quanh các ký tự. Bạn có thể tìm thấy điều này là một điểm khởi đầu tốt:
http://docs.wxwidgets.org/stable/wx_wxdc.html#wxdcgetpartialtextextents
hoặc, như litb gợi ý:
http://docs.wxwidgets.org/2.4/wx_wxwindow.html#wxwindowgettextextent
Có vẻ như không phải là một cách. Tuy nhiên, bạn có thể sử dụng wxWindow::GetTextExtent
. Đây là C++, nhưng có thể dễ dàng thích nghi với 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();
đây là, bạn lấy kích thước của một nhân vật rộng hợp lý (phông chữ có thể có nhân vật biến rộng) và nhân nó đúng cách, bổ sung một số giá trị nhỏ để tài khoản cho đệm gốc (nói, 10px).
- 1. jQuery: đặt chiều rộng của vùng văn bản?
- 2. Khóa chiều rộng của hộp văn bản
- 3. định dạng chiều rộng văn bản vim
- 4. Đặt chiều rộng cột văn bản biến trong printf
- 5. Đặt lại chiều rộng nhãn flex thành "tự động" sau khi đặt chiều rộng rõ ràng?
- 6. Cách lấy chiều rộng/chiều cao của văn bản
- 7. hộp văn bản nhiều dòng tự động điều chỉnh chiều cao theo số lượng văn bản
- 8. wxPython: Làm thế nào để làm cho một TextCtrl điền vào một Panel
- 9. Nhận chiều rộng văn bản trong MFC
- 10. Giới hạn chiều rộng đường viền thành chiều rộng văn bản trong một phần tử khối
- 11. Cách giới hạn chiều rộng văn bản
- 12. Chiều rộng của input type = yếu tố văn bản
- 13. Đo chiều dài của chuỗi chứa ký tự rộng
- 14. Đo chiều rộng văn bản trong Qt
- 15. Tính kích thước văn bản theo chiều rộng của vùng văn bản
- 16. Tự động đặt chiều rộng và chiều cao của TextView trong Android
- 17. Làm thế nào để làm cho chiều rộng của nút tự động sửa văn bản của một nút?
- 18. Thêm một số ký tự ở đầu mỗi dòng
- 19. Làm cách nào để đặt chiều rộng TAB trong điều khiển Hộp văn bản Windows Forms?
- 20. Bọc mềm ở 80 ký tự trong Vim trong cửa sổ có chiều rộng tùy ý
- 21. Cắt văn bản trong div nếu nó vượt quá chiều rộng đã đặt?
- 22. iPhone - Điều chỉnh chiều rộng UILabel theo văn bản
- 23. Đặt chiều rộng tối đa của ImageView dưới dạng phần trăm chiều rộng của bố mẹ
- 24. đầu vào và văn bản xuất hiện chiều rộng khác nhau khi được đặt thành cùng chiều rộng?
- 25. Đọc từ ký tự tệp văn bản theo ký tự
- 26. Kiểu hộp văn bản mặc định và chiều rộng
- 27. wxPython, Đặt giá trị của StaticText()
- 28. Lớp văn bản Qml (chiều rộng tối đa)
- 29. Cách đặt văn bản ở đầu của RibbonApplicationMenu
- 30. Plugin jquery để cắt bớt chuỗi văn bản dài theo chiều rộng/chiều cao của vùng chứa