我正在使用wxrichtextctrl开发一个程序。我坚持为选择设置字体。经过大量的谷歌搜索后,我找到了wxpython演示,在那里我找到了一个样本。以下是来自wxpython demo的原始代码,它产生了一个错误。
def OnFont(self, evt):
if not self.rtc.HasSelection():
return
r = self.rtc.GetSelectionRange()
fontData = wx.FontData()
fontData.EnableEffects(False)
attr = wx.TextAttr()
attr.SetFlags(wx.TEXT_ATTR_FONT)
if self.rtc.GetStyle(self.rtc.GetInsertionPoint(), attr):#line is generating error
fontData.SetInitialFont(attr.GetFont())
dlg = wx.FontDialog(self, fontData)
if dlg.ShowModal() == wx.ID_OK:
fontData = dlg.GetFontData()
font = fontData.GetChosenFont()
if font:
attr.SetFlags(wx.TEXT_ATTR_FONT)
attr.SetFont(font)
self.rtc.SetStyle(r, attr)#generating error
dlg.Destroy()
我收到错误 if self.rtc.GetStyle(self.rtc.GetInsertionPoint(),attr): GetStyle中的文件“C:\ Python27 \ lib \ site-packages \ wx-2.9.4-msw \ wx \ richtext.py”,第3121行 TypeError:在方法'RichTextCtrl_GetStyle'中,预期参数3的类型为'wxRichTextAttr&'。
文件“C:\ Python27 \ lib \ site-packages \ wx-2.9.4-msw \ wx \ richtext.py”,第3111行,在SetStyle中 return _richtext.RichTextCtrl_SetStyle(* args,** kwargs) TypeError:在方法'RichTextCtrl_SetStyle'中,类型为'wxRichTextAttr const&'的预期参数3
我正在使用windows xp和wxpython 2.9 python 2.7。在演示中,字体和颜色也不起作用。 getstyle和setstyle产生错误。显然因为这个字体和颜色在wxpython演示中的richtextctrl演示中不起作用。
答案 0 :(得分:1)
您找到的示例代码可能是较旧的wxPython版本,这就是它无效的原因。
取代:
attr = wx.TextAttr()
使用:
attr = wx.richtext.RichTextAttr()
适用于wx 2.8.12
和wx 2.9.4
。