对wxPython中的多个对象应用公共字体方案

2024-09-28 03:14:43 发布

您现在位置:Python中文网/ 问答频道 /正文

很多时候,我会在wxPython应用程序中对静态文本使用相同的字体方案。目前,我正在为每个静态文本对象调用SetFont(),但这似乎有很多不必要的工作。但是,wxPython演示和wxPython在行动手册中没有讨论这一点。在

有没有一种方法可以轻松地将相同的SetFont()方法应用于所有这些文本对象而不必每次单独调用?在


Tags: 对象方法文本应用程序wxpython静态方案字体
3条回答

也许可以尝试将文本对象子类化,然后在您的类__init__方法中调用SetFont()?在

或者,做一些类似的事情:

def f(C):
  x = C()
  x.SetFont(font) # where font is defined somewhere else
  return x

然后用它来装饰你创建的每个文本对象:

^{pr2}$

(当然,如果StaticText构造函数需要一些参数,则需要更改f函数定义中的第一行)。在

在添加父窗口之前,你可以调用任何窗口控件。子窗口小部件将继承字体。在

如果已经创建了所有小部件,则可以递归地应用SetFont,例如使用以下函数:

def changeFontInChildren(win, font):
    '''
    Set font in given window and all its descendants.
    @type win: L{wx.Window}
    @type font: L{wx.Font}
    '''
    try:
        win.SetFont(font)
    except:
        pass # don't require all objects to support SetFont
    for child in win.GetChildren():
        changeFontInChildren(child, font)

使frame中的所有文本变为默认斜体字体的示例用法:

^{pr2}$

相关问题 更多 >

    热门问题