2010-03-16 12 views
10

Ich benutze wxPython's HyperTreeList und ich möchte die Spaltenbreite genau gleich der Länge der größten Zeichenfolge darin festlegen.Wie erhält man die Breite einer Zeichenfolge in Pixel?

Um dies zu erreichen, möchte ich eine Python-String-Größe in Pixel konvertieren.

Beispiel: Wenn wir eine Zeichenfolge wie

str = "python" 
len(str) = 6 

Wie konnte ich die obige String-Länge/Größe in Pixel umwandeln?

Gibt es einen anderen Weg?

+0

Die Größe in Pixeln auf der Schriftart abhängen Sie die Zeichenfolge und die Grafik-Toolkit zum Anzeigen verwenden Sie sind Verwenden, um die Schriftart zu rendern. Sie müssen uns mehr Informationen geben, bevor wir Ihnen helfen können. –

+1

Ich verwende wxPython HyperTreeList und ich möchte die Spaltenbreite genau gleich der Länge eines Spaltenwerts setzen. Eigentlich möchte ich die Spaltengröße gleich Größe des größten Zeichenfolgenwerts in einer Spalte anpassen. – MA1

Antwort

13

Du musst tun somethinglike (die documentation of wxWidgets für weitere Informationen siehe)

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

Verwenden Sie GetColumnFont, um die richtige Schriftart und GetTextExtent, um Breite zu erhalten –

10

Es hängt davon ab, wie Sie den Text drucken.

Sie könnten Interesse an PIL ImageDraw, die eine textsize Methode hat. Siehe http://effbot.org/imagingbook/imagedraw.htm

Update: Dies war die ursprüngliche Frage zu beantworten. Es kann ein wenig Off-Topic nach Fragen Updates aussehen.

+1

Bitte erläutern Sie den Downvote. Zu Ihrer Information, die ursprüngliche Antwort hat nicht gesagt, dass es für WxPython war. Soll ich diese Antwort löschen? – luc

+0

+1 Entschuldigung, habe die ursprüngliche unbearbeitete Frage nicht gesehen, die Antwort war dann sinnvoll. –

+0

hmm kann nicht aktualisiert werden, bis Sie die Antwort bearbeiten :( –

Verwandte Themen