更改字体在wxPython中StyledTextCtrl

问题描述 投票:0回答:1

我一直在编码与wxPython的和所遇到的问题。我创建了一个FontDialog功能也改变了字体。问题是,我无法改变字体。在Tkinter的,你可以widget.config(font=font)和字体瞬间改变。我一直无法弄清楚如何做一个wxPython的StyledTextCtrl。任何帮助,将不胜感激。这里是我当前的代码:

定义窗口小部件:

self.control = wx.stc.StyledTextCtrl(self, style=wx.TE_MULTILINE)
self.control.SetMarginWidth(1, 0)
self.control.SetScrollWidth(wx.stc.STC_CACHE_CARET)
self.CreateStatusBar()

调用字体功能:

self._font = self.formatmenu.Append(wx.ID_SELECT_FONT, 'Font...', 'Change the font displayed in the editor')
self.Bind(wx.EVT_MENU, self.font_func, self._font)

功能:

def font_func(self, event):
    dialog = wx.FontDialog()
    if dialog.ShowModal() == wx.ID_CANCEL:
        return
    font = wx.Font(dialog.GetFont())
    self.control.StyleSetFont(0, font=font) # Here is my error - nothing happens.

谢谢,Legorooj。

python fonts wxpython python-3.7 wxstyledtextctrl
1个回答
0
投票

您正在使用FontDialog我的思考方式是简单地返回当前字体。 您需要访问GetFontData功能,就像这样:

>>> dlg = wx.FontDialog(None)
>>> if dlg.ShowModal()==wx.ID_OK:
...  font = dlg.GetFontData().GetChosenFont()
...  print(font.GetFaceName())
... 
Times New Roman
© www.soinside.com 2019 - 2024. All rights reserved.