Ich habe ein TextCtrl
in meinem wxPython-Programm, und ich möchte seine Breite auf genau 3 Zeichen festlegen. Die einzige Möglichkeit, die Größe manuell festzulegen, akzeptiert jedoch nur die Anzahl der Pixel. Gibt es eine Möglichkeit, Zeichen anstelle von Pixeln anzugeben?Einstellen der Breite eines wxPython TextCtrl in Anzahl der Zeichen
Antwort
Beachten Sie, dass die meisten Schriftarten proportional sind, was bedeutet, dass jedes Zeichen eine andere Breite haben kann. WWW und III sind beide 3 Zeichen, aber sie werden eine sehr große Textbox erfordern. Einige Schriftarten, z. B. Courier, haben eine feste Breite und dieses Problem tritt nicht auf. Leider haben Sie möglicherweise keine Kontrolle darüber, welche Schriftart im Textfeld ausgewählt ist.
Wenn Sie dies immer noch versuchen möchten, müssen Sie die Breite eines Zeichens in Pixeln ermitteln, sie mit der Anzahl der Zeichen multiplizieren und dann eine Füllung für die Rahmen um die Zeichen hinzufügen. Sie können diese sein, einen guten Ausgangspunkt zu finden:
http://docs.wxwidgets.org/stable/wx_wxdc.html#wxdcgetpartialtextextents
oder, wie litb schlägt vor:
http://docs.wxwidgets.org/2.4/wx_wxwindow.html#wxwindowgettextextent
Es ist kein Weg zu sein scheint. Sie können jedoch wxWindow::GetTextExtent
verwenden. Dies ist C++ Code, kann aber leicht zu WxPython angepasst werden:
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();
Sie nehmen die Größe einer angemessenen Breite Zeichen (Fonts können variable Breite Zeichen) und multiplizieren Sie es richtig, das ist, das Hinzufügen einiger kleiner Wert Konto für natives Padding (z. B. 10px).
- 1. Unicode und wxPython TextCtrl
- 2. Set textarea genaue Breite, basierend auf der Anzahl der Zeichen
- 3. Breite entsprechend der Höhe einstellen
- 4. KendoUI Breite der Dropdownliste einstellen
- 5. Einstellen der Breite der Inline-Elemente
- 6. wxPython: Wie suche ich nach Text in einer TextCtrl?
- 7. Einstellen der Breite als Prozentsatz mit jQuery
- 8. Swift- Einstellen der Bildbreite auf die Breite eines externen Bildes
- 9. richTextBox Anzahl der Zeichen?
- 10. Zählen der Anzahl der Zeichen in TextBox
- 11. Wxpython Bitmap Hinzufügen von Textctrl/Combobox oben drauf?
- 12. Anzahl der Zeichen von EditText
- 13. Einstellen der Höhe eines JPanels
- 14. Matplotlib Rechteckkante außerhalb der angegebenen Breite einstellen?
- 15. Wie kann ich den Logger mithilfe eines benutzerdefinierten Protokollierungshandlers in eine wxPython-textCtrl umleiten?
- 16. wxPython: Wie man eine TextCtrl füllt ein Panel
- 17. Anzahl der Array (innerhalb eines Arrays) zu bestimmen UIView Breite
- 18. Einstellen der Leinwandgröße in Javascript
- 19. , wie die Anzahl der Zeichen
- 20. Einstellen der Farbe eines Objekts
- 21. Einstellen der Größe eines JPanel
- 22. Anzahl der Vorkommen eines Zeichens in NSString
- 23. Anzahl der Zeichen in varchar (max)
- 24. Anzahl der Zeichen in C# Zeichenfolge
- 25. Anzahl der Zeichen in NSString oder NSMutableString?
- 26. , wie der Rahmen der Breite, wenn die Anzahl der Kugeln
- 27. Einstellen der Spaltenbreite in der Tabellenansicht
- 28. Aufteilen von Spalten nach Anzahl der Zeichen
- 29. variabler Breite Grid nach Anzahl der Zellen
- 30. Entfernen Sie das letzte Zeichen von wxPython wxTextCtrl?