wxPython RichTextCtrl 中的上标
Superscript in wxPython RichTextCtrl
我正在尝试让 wxPython RichTextCtrl 显示上标。
我在
看到了一些 wxWidgets 代码
http://wxwidgets.10942.n7.nabble.com/rich-text-and-font-attributes-td23557.html
并且还在
上看到了文档
https://wxpython.org/Phoenix/docs/html/wx.TextAttr.html#wx.TextAttr.SetTextEffects
到目前为止,我得到了这个,但它不起作用
attr = wx.richtext.RichTextAttr()
attr.SetTextEffects (wx.TEXT_ATTR_EFFECT_SUPERSCRIPT)
attr.SetTextEffectFlags (wx.TEXT_ATTR_EFFECTS)
#attr.SetTextEffectFlags (wx.TEXT_ATTR_EFFECT_SUPERSCRIPT)
attr.SetFlags (wx.TEXT_ATTR_EFFECTS)
self.myRichTextCtrl.SetStyle (currentPos, currentPos+len(value1)-1, attr)
self.myRichTextCtrl.WriteText (myString)
我知道有一个 fancytext 小部件,但此时切换到 fancytext 不切实际。
如有任何帮助,我们将不胜感激!
对于 SetStyle
,您正在将属性应用到您尚未写入的文本位置。
有一个选项 SetBasicStyle
和 SetDefaultStyle
允许您为整个文档或从现在开始设置属性。
这是一个工作示例。
import wx
import wx.richtext as rt
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='Test RichText Superscript')
self.panel = wx.Panel(self)
self.rtc1 = rt.RichTextCtrl(self.panel,pos=(10,10),size=(350,90),style=wx.VSCROLL|wx.HSCROLL|wx.NO_BORDER|wx.FONTFAMILY_DEFAULT|wx.TEXT_ATTR_FONT_FACE)
self.rtc2 = rt.RichTextCtrl(self.panel,pos=(10,110),size=(350,90),style=wx.VSCROLL|wx.HSCROLL|wx.NO_BORDER|wx.FONTFAMILY_DEFAULT|wx.TEXT_ATTR_FONT_FACE)
self.Show()
attr_super = wx.richtext.RichTextAttr()
attr_super.SetTextEffects(wx.TEXT_ATTR_EFFECT_SUPERSCRIPT)
attr_super.SetFlags(wx.TEXT_ATTR_EFFECTS)
attr_super.SetTextEffectFlags(wx.TEXT_ATTR_EFFECT_SUPERSCRIPT)
self.rtc1.WriteText("Is this super?")
self.rtc1.SetStyle (7, 13, attr_super)
attr_sub = wx.richtext.RichTextAttr()
attr_sub.SetTextEffects(wx.TEXT_ATTR_EFFECT_SUBSCRIPT)
attr_sub.SetFlags(wx.TEXT_ATTR_EFFECTS)
attr_sub.SetTextEffectFlags(wx.TEXT_ATTR_EFFECT_SUBSCRIPT)
self.rtc1.AppendText ("\nIs this sub?")
self.rtc1.SetStyle (23, 26, attr_sub)
self.rtc1.AppendText ("\nIs this normal?")
self.rtc2.WriteText("Is this super?")
self.rtc2.SetDefaultStyle(attr_super)
self.rtc2.WriteText("\nIs this super?")
if __name__ == '__main__':
app = wx.App()
frame = MainFrame()
app.MainLoop()
我正在尝试让 wxPython RichTextCtrl 显示上标。 我在
看到了一些 wxWidgets 代码http://wxwidgets.10942.n7.nabble.com/rich-text-and-font-attributes-td23557.html
并且还在
上看到了文档https://wxpython.org/Phoenix/docs/html/wx.TextAttr.html#wx.TextAttr.SetTextEffects
到目前为止,我得到了这个,但它不起作用
attr = wx.richtext.RichTextAttr()
attr.SetTextEffects (wx.TEXT_ATTR_EFFECT_SUPERSCRIPT)
attr.SetTextEffectFlags (wx.TEXT_ATTR_EFFECTS)
#attr.SetTextEffectFlags (wx.TEXT_ATTR_EFFECT_SUPERSCRIPT)
attr.SetFlags (wx.TEXT_ATTR_EFFECTS)
self.myRichTextCtrl.SetStyle (currentPos, currentPos+len(value1)-1, attr)
self.myRichTextCtrl.WriteText (myString)
我知道有一个 fancytext 小部件,但此时切换到 fancytext 不切实际。
如有任何帮助,我们将不胜感激!
对于 SetStyle
,您正在将属性应用到您尚未写入的文本位置。
有一个选项 SetBasicStyle
和 SetDefaultStyle
允许您为整个文档或从现在开始设置属性。
这是一个工作示例。
import wx
import wx.richtext as rt
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='Test RichText Superscript')
self.panel = wx.Panel(self)
self.rtc1 = rt.RichTextCtrl(self.panel,pos=(10,10),size=(350,90),style=wx.VSCROLL|wx.HSCROLL|wx.NO_BORDER|wx.FONTFAMILY_DEFAULT|wx.TEXT_ATTR_FONT_FACE)
self.rtc2 = rt.RichTextCtrl(self.panel,pos=(10,110),size=(350,90),style=wx.VSCROLL|wx.HSCROLL|wx.NO_BORDER|wx.FONTFAMILY_DEFAULT|wx.TEXT_ATTR_FONT_FACE)
self.Show()
attr_super = wx.richtext.RichTextAttr()
attr_super.SetTextEffects(wx.TEXT_ATTR_EFFECT_SUPERSCRIPT)
attr_super.SetFlags(wx.TEXT_ATTR_EFFECTS)
attr_super.SetTextEffectFlags(wx.TEXT_ATTR_EFFECT_SUPERSCRIPT)
self.rtc1.WriteText("Is this super?")
self.rtc1.SetStyle (7, 13, attr_super)
attr_sub = wx.richtext.RichTextAttr()
attr_sub.SetTextEffects(wx.TEXT_ATTR_EFFECT_SUBSCRIPT)
attr_sub.SetFlags(wx.TEXT_ATTR_EFFECTS)
attr_sub.SetTextEffectFlags(wx.TEXT_ATTR_EFFECT_SUBSCRIPT)
self.rtc1.AppendText ("\nIs this sub?")
self.rtc1.SetStyle (23, 26, attr_sub)
self.rtc1.AppendText ("\nIs this normal?")
self.rtc2.WriteText("Is this super?")
self.rtc2.SetDefaultStyle(attr_super)
self.rtc2.WriteText("\nIs this super?")
if __name__ == '__main__':
app = wx.App()
frame = MainFrame()
app.MainLoop()