使用wxPython实现灵活的“em”样式字体
我在找一种方法,可以让字体的大小根据屏幕分辨率的大小自动增大或减小。我希望能做到这一点,而不需要使用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()