Изменить шрифт в wxPython StyledTextCtrl - PullRequest
0 голосов
/ 08 февраля 2019

Я кодировал с 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.

1 Ответ

0 голосов
/ 08 февраля 2019

То, как вы используете FontDialog Я думаю, это просто возврат текущего шрифта.
Вам нужен доступ к функции GetFontData, например:

>>> dlg = wx.FontDialog(None)
>>> if dlg.ShowModal()==wx.ID_OK:
...  font = dlg.GetFontData().GetChosenFont()
...  print(font.GetFaceName())
... 
Times New Roman
...