如何使用 RichTextCtrl 事件?
How to use RichTextCtrl events?
我不确定我是否完全了解如何使用 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'
我是否需要导入其他东西才能使其正常工作?如果是这样 - 什么?我不太明白 wxPython 文档中关于此的内容。
我怀疑您只是错误地将事件分配给 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()
我不确定我是否完全了解如何使用 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'
我是否需要导入其他东西才能使其正常工作?如果是这样 - 什么?我不太明白 wxPython 文档中关于此的内容。
我怀疑您只是错误地将事件分配给 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()