避免 macOS 和 Windows 之间的 wxPython TextCtrl 差异

Avoid wxPython TextCtrl differences between macOS and Windows

这个简单的文本控件片段在 macOS(顶部)和 WindowswxPython 4.0.4 上产生了截然不同的结果。我该如何缓解?

self.console_ctrl = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL)
self.console_ctrl.SetFont(wx.Font(13, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
self.console_ctrl.SetBackgroundColour(wx.BLACK)
self.console_ctrl.SetForegroundColour(wx.RED)
self.console_ctrl.SetDefaultStyle(wx.TextAttr(wx.RED))

Windows上的字体好像大了很多。别介意糟糕的屏幕截图质量;必须与 VirtualBox 中的 Windows 运行 有关。

注意:这是交叉发布到 https://groups.google.com/forum/#!topic/wxpython-users/j3HFo_-SeaU

您需要在代码中识别 OS 并为每个设置正确的字体,查看 wxPython 演示示例

最终决定性的改进是用像素而不是点来定义字体。

self.console_ctrl.SetFont(wx.Font((0, 13), wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))

请注意(重载)wx.Font constructor 的第一个参数现在是 wx.Size 而不是整数。