使用wxPython实现灵活的“em”样式字体

4 投票
1 回答
1011 浏览
提问于 2025-04-15 13:21

我在找一种方法,可以让字体的大小根据屏幕分辨率的大小自动增大或减小。我希望能做到这一点,而不需要使用HTML窗口类。请问有没有什么办法?我觉得我已经在网上搜索了很多,但都没有找到合适的答案。

编辑 这个问题看起来挺好的,我改了标题,让它更贴近我想要的内容。

编辑

现在我意识到,常规的像素大小会像我之前提到的那样进行缩放。不过,我前几天看到的一个东西让我觉得,如果有人想在他们的wxPython应用程序中使用CSS,这可能会很有帮助。wxPython是一个可以让你给应用程序“换皮”的库,我已经想到了很多有趣的用法。这里有一个链接,代替我更深入思考的问题 :)

链接文本

1 个回答

1

也许可以这样做?你可以用这种方式调整任何 wx.Window 的大小。不过我不太确定这是不是你想要的效果。

import wx

def scale(widget, percentage):
    font = widget.GetFont()
    font.SetPointSize(int(font.GetPointSize() * percentage / 100.0))
    widget.SetFont(font)

class Frame(wx.Frame):
    def __init__(self):
        super(Frame, self).__init__(None, -1, 'Scaling Fonts')
        panel = wx.Panel(self, -1)
        sizer = wx.BoxSizer(wx.VERTICAL)
        for i in range(50, 201, 25):
            widget = wx.StaticText(panel, -1, 'Scale Factor = %d' % i)
            scale(widget, i)
            sizer.Add(widget, 0, wx.ALL, 5)
        panel.SetSizer(sizer)

if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = Frame()
    frame.Show()
    app.MainLoop()

撰写回答