Как использовать события RichTextCtrl? - PullRequest
0 голосов
/ 08 мая 2020

Я не уверен, что понимаю, как использовать события RichTextCtrl.

Я хочу, чтобы текст, введенный в RichText, был помещен в другую строку.

Я бы хотел иметь возможность сделать это с помощью EVT_RICHTEXT_CHARACTER, но когда я набираю

self.textField.Bind(wx.EVT_RICHTEXT_CHARACTER,self.textEdit)

, где self.textField - это RichTextCtrl, я получаю сообщение об ошибке:

Cannot find reference 'EVT_RICHTEXT_CHARACTER' in '__init__.py | __init__.py | imported module wx'

Нужно ли мне импортировать что-то еще, чтобы оно работало? Если да, то? Я не совсем понял, что об этом говорится в документации wx Python.

1 Ответ

1 голос
/ 08 мая 2020

Я подозреваю, что вы просто неправильно назначаете событие wx, когда оно должно быть чем-то другим.
Ниже, потому что я импортирую wx.richtext как rt, событие будет в rt
т.е. rt.EVT_RICHTEXT_CHARACTER

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.FONTFAMILY_DEFAULT|wx.TEXT_ATTR_FONT_FACE)
        self.rtc1.Bind(rt.EVT_RICHTEXT_CHARACTER,self.textEdit)
        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("\nThis is super?")

    def textEdit(self, event):
        char = event.GetCharacter()
        self.rtc2.AppendText(char)

if __name__ == '__main__':
    app = wx.App()
    frame = MainFrame()
    app.MainLoop()
...