我是使用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上测试。
答案 0 :(得分:1)
ISTR认为这是因为像素的方式改变了 - >在2.8中计算的点大小是不正确的,它固定为2.9 / 3.0。如果您需要保持兼容性,那么您可以根据wx.VERSION条件化用于像素高度的值。