更改 wxPython StyledTextCtrl 中的字体
Change the font in a wxPython StyledTextCtrl
我一直在使用 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。
你使用的方式 FontDialog
我认为只是返回当前字体。
您需要访问 GetFontData
函数,如下所示:
>>> dlg = wx.FontDialog(None)
>>> if dlg.ShowModal()==wx.ID_OK:
... font = dlg.GetFontData().GetChosenFont()
... print(font.GetFaceName())
...
Times New Roman
我一直在使用 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。
你使用的方式 FontDialog
我认为只是返回当前字体。
您需要访问 GetFontData
函数,如下所示:
>>> dlg = wx.FontDialog(None)
>>> if dlg.ShowModal()==wx.ID_OK:
... font = dlg.GetFontData().GetChosenFont()
... print(font.GetFaceName())
...
Times New Roman