我想在TraitsUI视图中更改TextEditor中的字体。我怎样才能做到这一点?
我阅读了(优秀的)文档,API参考文档,并要求Google提供答案,但找不到答案。
平台和工具包独立性不是我的应用程序的要求。我在Windows上工作并使用wx工具包。
答案 0 :(得分: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()
答案 1 :(得分:1)
我认为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