簡體   English   中英

在Enthought TraitsUI TextEditor中更改字體

[英]Changing the font in Enthought TraitsUI TextEditor

我想在TraitsUI視圖中的TextEditor中更改字體。 我怎樣才能做到這一點?

我閱讀了(優秀的)文檔,API參考文檔,並要求Google給出答案,但是找不到答案。

平台和工具包的獨立性不是我的應用程序所必需的。 我在Windows上工作並使用wx工具包。

在研究了源代碼並進行了一些試驗之后,我提出了以下解決方案。 對我來說,這似乎太復雜了(我必須將兩個類都子類化!),以使其成為最簡單或預期的方法。

如果有更好的解決方案,我將很高興了解它。

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()

我認為特質使用Qt。 因此,要更改字體大小,請使用style_sheet參數。 見下面的例子

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

如果要應用多個字體選項,請使用分號分隔,如下所示:

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

有關您可以應用的所有Qt樣式表選項,請參閱《 Qt樣式表參考》。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM