Верхний индекс в wxPython RichTextCtrl - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь заставить 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)

Я знаю, что есть виджет необычного текста, но на данный момент нецелесообразно переключаться на необычный текст.

Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 05 ноября 2018

С 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()

enter image description here

...