2017-07-25 1 views
2

Hier ist ein Ausschnitt aus meinem Code:Wie wird das Caret-Symbol im statischen WxPython-Textwidget angezeigt?

 self.diffusivity_label = wx.StaticText(self, label=u'Thermal Diffusivity [m^2/s]') 

Ich möchte das Caret-Zeichen angezeigt werden, so dass meine statischen Text genau so aussehen kann: „Temperaturleitfähigkeit [m^2/s]“ Nach dem Online-Suche, versucht zu tun ich dies:

 self.diffusivity_label = wx.StaticText(self, label=u'Thermal Diffusivity [m\u20382/s]') 

Doing das Caret-Zeichen so angezeigt, aber es wurde nicht erhöht, wie ich es aussehen soll. Stattdessen sieht der Text wie folgt aus:

enter image description here

Was kann ich jetzt tun? Vielen Dank im Voraus für Ihre Hilfe!

+1

Eh? Das ASCII-Zeichen mit der Ordinalzahl 94 (5e in hex), das als '^' dargestellt wird, ist perfekt UTF-8 (UTF-8 ist schließlich eine richtige Obermenge von 7-Bit-ASCII). –

+0

Sie wollen fast sicher Unicode 005E. Alternativ tippen Sie das Zeichen in einen Texteditor, der die Datei in UTF-8 schreibt. – tfb

+0

... verwenden Sie vielleicht einen Widget-Satz, der '^' als Zeichen für "das nächste Zeichen ist der Hotkey" behandelt? Das ist eine Frage zu wxWidgets, nicht zu UTF-8. –

Antwort

3

Wenn Sie so etwas wie schreiben möchten: m²/s, können Sie Unicode-Codepoint SUPERSCRIPT TWO genannt verwenden, \u00b2, das wie folgt aussieht: ².

So kann man sagen:

self.diffusivity_label = wx.StaticText(self, label=u'Thermal Diffusivity [m\u00b2/s]') 
+0

Perfekt! Danke Kumpel! – Aang

+0

Gern geschehen! – randomir

0

WxPython das fancytext Widget ziemlich genau für diesen Zweck zur Verfügung stellt. Es bietet Superscripting und Subscripting-Unterstützung sowie andere Textstile. Hier ist ein Beispiel mit Ihrem Text:

import wx 
import wx.lib.fancytext as fancytext 

class MyFrame(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, None, title='Superscripting') 
     self.panel = wx.Panel(self) 
     self.panel.Bind(wx.EVT_PAINT, self.on_panel_paint) 

     self.Show() 

    def on_panel_paint(self, event): 
     dc = wx.PaintDC(self.panel) 
     text = "Thermal Diffusivity [m<sup>^</sup>2/s]." 
     w, h = fancytext.GetExtent(text, dc) 
     fancytext.RenderToDC(text, dc, 20, 20) 


if __name__ == '__main__': 
    app = wx.App(False) 
    frame = MyFrame() 
    app.MainLoop() 
Verwandte Themen