wxrichtextctrl を使用して小さなアプリを開発しています。フォント関数が予期しない動作をしています。以下はフォント関数です。
def OnFont(self,event):
if not self.display.HasSelection():
return
r = self.display.GetSelectionRange()
fontData = wx.FontData()
fontData.EnableEffects(False)
attr = wx.richtext.RichTextAttr()
attr.SetFlags(wx.TEXT_ATTR_FONT)
dlg = wx.FontDialog(self, fontData)
if dlg.ShowModal() == wx.ID_OK:
fontData = dlg.GetFontData()
font = fontData.GetChosenFont()
color=fontData.GetChosenColor()
if font:
attr.SetFlags(wx.TEXT_ATTR_FONT)
attr.SetFont(font)
self.display.SetStyle(r, attr)
dlg.Destroy()
これに関する問題は、選択したテキストに下線が引かれていて、フォントが設定されている場合、下線が削除されることです。テキストの太さ、下線、イタリック体を変更するのではなく、ダイアログで現在のフォントのみを変更する方法はありますか? または、これは richtextformatting ダイアログで可能です。または、fontdialog を変更して、選択したフォントとサイズのオプションのみを表示し、選択したテキストを変更することは可能ですか。誰かが良いサンプル ドキュメントを指摘できますか。
更新: ダイアログに定義済みのフォントを設定することはできますが、問題は選択したテキストのフォント値を取得することです。私がしようとしているのは、選択範囲の最初の文字のスタイルを取得し、下線、フォント、太字、斜体、サイズなどのフォント ダイアログに設定することです。以下は、私がやろうとしているコードです。
attr = wx.richtext.RichTextAttr()
attr.SetFlags(wx.TEXT_ATTR_FONT)
fontofselection=self.richtextctrl.GetStyle(1,attr)#this works without errors
fontData.SetInitialFont(fontofselection)#this generates above mentioned error. probably because getstyle is not getting font object type. Is there another method to get font of a character at particular position.