wxPython,如何以毫米为单位获取小部件的大小?

时间:2013-08-02 17:51:34

标签: wxpython

假设我有一个Paper (wx.Panel)并且我想以毫米为单位绘制图表,所以我将PaintDc的映射模式设置为毫米:dc.SetMapMode(wx.MM_METRIC)然后我就是要绘制水平轴。

class Paper(wx.Panel):
    def onPaint(self, event):
        dc = wx.PaintDC(self)
        dc.SetMapMode(wx.MM_METRIC)
        w, h = self.GetClientSize() <<< This line get size in pixel.
        dc.DrawLine(0, h-10, w-1, h-10)

我希望轴远离纸张底部10毫米,所以我查询纸张尺寸为w, h = self.GetClientSize(),但问题是尺寸是以像素而不是毫米为单位。

以mm为单位获取面板尺寸的功能是什么,或者是否有将像素尺寸映射到mm的功能。

2 个答案:

答案 0 :(得分:2)

我不是python程序员,也没有使用wxWidgets超过一小段时间,所以我的回答纯粹是假设没有方法会为你做这个。

你需要获得屏幕的分辨率(通常为75dpi),然后计算一个像素在该屏幕上相等的毫米数。

屏幕分辨率详情http://www.scantips.com/basics1a.html

不要假设如果没有校准或从某些来源获取显示器信息,您将获得一个规则并测量与绘制相同的mm。

答案 1 :(得分:2)

幸运的是,我发现有一些函数可以获得屏幕尺寸,以像素为单位,以毫米为单位:wx.GetDisplaySize()wx.GetDisplaySizeMM(),我可以用它来计算每像素毫米的数量{{ 1}},反过来可用于将像素大小转换为毫米。

mmperpx