2017-07-25 3 views
2

は、私のコードの抜粋です:wxPython静的テキストウィジェットでキャレットシンボルを表示するには?ここ

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

私は私の静的なテキストは、まさにこのように見ることができるように、キャレット記号を表示したいと思います:「熱拡散率[M^2/s]で」オンライン見た後、私はこれをやってみました:

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

はそうキャレット記号を表示するが、私はそれを見てみたいようにそれは上昇しませんでした。代わりに、テキストは次のようになります。

enter image description here

私は今何ができますか?ご協力いただきありがとうございます!あなたが何か書きたい場合

+1

え? '^ 'と表示される序数94(5eで16進数)のASCII文字は、完全に有効なUTF-8(UTF-8は結局、7ビットASCIIの適切なスーパーセットです)です。 –

+0

ほとんどの場合、Unicode 005Eが必要です。または、ファイルをUTF-8で書き込むテキストエディタで文字を入力するだけです。 – tfb

+0

...おそらくウィジェットセットを使用していますか?「次の文字はホットキーですか?」という記号として '^'を扱いますか?これはwxWidgetsに関する質問であり、UTF-8に関する質問ではありません。 –

答えて

3

は:²m²/sを、あなたは次のようになり、SUPERSCRIPT TWO\u00b2と呼ばれるUnicodeのコードポイントを、使用することができます。

だから、あなたが言うことができます。

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

パーフェクト!やあ、ありがとう! – Aang

+0

よろしくお願いします! – randomir

0

wxPythonのは、まさにこの目的のために、かなりfancytextウィジェットを提供します。これは、スーパースクリプトやサブスクリプトのサポート、その他のテキストスタイルを提供します。ここにあなたのテキストを使用した例です:

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() 
関連する問題