2

我想在 TraitsUI 视图的 TextEditor 中更改字体。我怎样才能做到这一点?

我阅读了(优秀的)文档、API 参考文档并要求 Google 提供答案,但找不到答案。

平台和工具包独立不是我的应用程序的要求。我在 Windows 上工作并使用 wx 工具包。

4

2 回答 2

2

在深入研究了源代码并进行了一些实验后,我想出了以下解决方案。对我来说,这似乎太复杂了(我必须继承两个类!)而不是最简单或预期的方法。

如果有更好的解决方案,我会很高兴了解它。

import wx
from traitsui.wx.text_editor import CustomEditor
from traitsui.editors.text_editor import ToolkitEditorFactory

class _MyTextEditor(CustomEditor):
    def init(self, parent):
        CustomEditor.init(self, parent)
        font = wx.Font(10, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
        self.control.SetFont(font)

class MyTextEditor(ToolkitEditorFactory):
    klass = _MyTextEditor
    def _get_custom_editor_class(self):
        return _MyTextEditor
    def _get_simple_editor_class(self):
        return _MyTextEditor

if __name__ == "__main__":
    from traitsui.api import View, Item
    from traits.api import Str, HasTraits

    class MyTestcase(HasTraits):
        a_string = Str()
        traits_view = View(Item('a_string', editor=MyTextEditor()))

    w = MyTestcase()
    w.configure_traits()
于 2013-10-01T08:52:19.647 回答
2

我认为 Traits 使用 Qt。因此,要更改字体大小,请使用 style_sheet 参数。请参见下面的示例

Item('a_string', style_sheet='*{font-size:24px}')

如果要应用多个字体选项,请使用分号分隔,如下所示:

Item('a_string', style_sheet='*{font-size:24px; font-style:italic}')

对于您可以应用的所有 Qt 样式表选项,请查看 Qt Style Sheets Reference

于 2017-05-18T22:11:58.037 回答