Wxpython RichTextctrl과 함께 취소합니다
-
23-12-2019 - |
문제
RichTextCtrl
의 wxPython
에서 Strike-through로 텍스트를 설정하고 싶습니다.그러나 BeginStrikethrough
또는 generacodicicetagcode와 같은 방법을 찾을 수 없습니다.
SetStrikethrough
에서 스트라이크를 적용 할 수 있습니까?방법?
편집 1 :
Paint-through 플래그가있는 PhapT-through 플래그와 Press-through 효과를 제공하지 않는 PhapT-through 플래그가있는
import wx
import wx.richtext as rt
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, 1, 'Testing strike-through')
rtc = rt.RichTextCtrl(self, -1)
rtc.WriteText("normal text")
rtc.Newline()
font = wx.FFont(12, wx.FONTFAMILY_DEFAULT, face='Tahoma', flags=wx.FONTFLAG_STRIKETHROUGH)
rtc.BeginFont(font)
rtc.WriteText("This is strike-through")
rtc.EndFont()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show()
app.MainLoop()
.
출력 :
해결책
-
font.SetStrikethrough(True)
, 이 링크를 참조 할 수 있습니다. -
그렇지 않은 경우 :
wxpython2.9.4 or higher
를 사용하여 원주민 정보 설명으로 플래그를 설정하십시오.
다음 문자열을 확인하여 차이를 보려면 Windows에서만 테스트됩니다.
취리가없는 것 : 0; -16; 0; 0; 400; 0; 0; 0; 400; 0; 0; 0; 0; 2; 32; 타호마스트라이커 로스와 함께 : 0; -16; 0; 0; 0; 400; 0; 0; 생성 된 0; 0; 0; 2; 32; 타호마
코드 :
import wx
import wx.richtext as rt
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, 1, 'Testing strike-through')
rtc = rt.RichTextCtrl(self, -1)
rtc.WriteText("normal text")
rtc.Newline()
font = wx.FFont(12, wx.FONTFAMILY_DEFAULT, face='Tahoma', flags=wx.FONTFLAG_STRIKETHROUGH)
info = font.GetNativeFontInfoDesc()
info = self.setFontInfoStrikethrough(info)
font.SetNativeFontInfoFromString(info)
rtc.BeginFont(font)
rtc.WriteText("This is strike-through")
rtc.EndFont()
def setFontInfoStrikethrough(self, info):
print "orig:", info
info = info.split(";")
info[8] = r'1'
info = ";".join(info)
print "new :",info
return info
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show()
app.MainLoop()
.다른 팁
텍스트 효과를 사용할 수 있습니다. 이는 WXPYTHON 2.8.12도 작동합니다.
style = rt.TextAttrEx()
style.SetFlags(rt.TEXT_ATTR_EFFECTS)
style.SetTextEffects(rt.TEXT_ATTR_EFFECT_STRIKETHROUGH)
style.SetTextEffectFlags(rt.TEXT_ATTR_EFFECT_STRIKETHROUGH)
rtc.BeginStyle(style)
rtc.WriteText("This is strike-through")
rtc.EndStyle()
.
(Linux에서 테스트)
제휴하지 않습니다 StackOverflow