문제

RichTextCtrlwxPython에서 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()
.

출력 :

출력에서 스트라이크 - 스루 없음

도움이 되었습니까?

해결책

여기에 이미지 설명

  1. font.SetStrikethrough(True), 이 링크를 참조 할 수 있습니다.

  2. 그렇지 않은 경우 : wxpython2.9.4 or higher를 사용하여 원주민 정보 설명으로 플래그를 설정하십시오.

  3. 다음 문자열을 확인하여 차이를 보려면 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에서 테스트)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top