字体从2.8发布到> = 2.9

时间:2014-05-15 16:27:03

标签: wxpython

我是使用wxPython 2.8的程序的开发人员。我希望我们可以升级到3.0(并保持向后兼容性)但是我们的自定义小部件似乎存在字体大小的问题。

所有标准小部件(列表,静态文本等)似乎都来自2.8 -> 2.9+,但我们的海关小部件(使用wx.FontFromPixelSize()设置字体)在2.9上看起来都比较大比他们2.8。以下是用于比较的屏幕截图:http://imgur.com/a/Ek5Ta

自定义小部件全部使用wx.FontFromPixelSize()。在上面的示例中,该窗口小部件使用:

self.font = wx.FontFromPixelSize((0,14),wx.SWISS, wx.NORMAL, wx.NORMAL, False)

似乎2.8和2.9处理像素大小的方式不同,我不确定为什么。我无法在网上找到很多相关信息。

我可以使用(0,11)作为大小来模拟2.8的外观,但是如果你在2.8中运行它,那就非常小了。

然而,我注意到的一件事是,如果我在主窗口上调用Font.GetPixelSize()(其中未明确设置字体),则会根据版本返回两个不同的值:

2.8:(0,-11)

2.9+:(0,12)

我不知道这是否相关,或者问题是否与基线尺寸不良有关。希望有一个简单的解决方法 - 我总是可以将所有大小存储在一个不同的模块中,并根据wxPython版本选择一些逻辑。

此外,这一切都来自Windows 7 x64。我还没能在Linux / OSX上测试。

1 个答案:

答案 0 :(得分:1)

ISTR认为这是因为像素的方式改变了 - >在2.8中计算的点大小是不正确的,它固定为2.9 / 3.0。如果您需要保持兼容性,那么您可以根据wx.VERSION条件化用于像素高度的值。