Изменить шрифт в wxPython StyledTextCtrl
Я кодирую с wxPython и столкнулся с проблемой. Я создал FontDialog
Функция, которая также меняет шрифт. Проблема в том, что я не могу изменить шрифт. В ткинтер вы можете 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.
Спасибо, Легорой.
1 ответ
Решение
То, как вы используете FontDialog
Я думаю, что просто возвращает текущий шрифт.
Вам необходимо получить доступ к GetFontData
функция, вот так:
>>> dlg = wx.FontDialog(None)
>>> if dlg.ShowModal()==wx.ID_OK:
... font = dlg.GetFontData().GetChosenFont()
... print(font.GetFaceName())
...
Times New Roman