码迷,mamicode.com
首页 > 编程语言 > 详细

wxPython 图形界面程序时 多个显示器问题。

时间:2016-04-19 20:17:04      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:wxpython   分辨率   多显示器   程序   而且   

在使用wxpython的时候也许会遇见这样的问题。软件用户或者潜在用户可能使用多个显示器,而且显示器设置并不是简单的投影而是扩展设置,这样的话,显示器的尺寸就超过了单一显示器的尺寸,而是两个现实器的综合。 


在需要调整窗口位置的时候,当使用SetPosition(Point, Flag)的时候就应该考虑到偏移量Offset。因为用户打开软件的可能并不是在主显示器上面,也许主窗口在第二个显示器上面。如果单纯的使用SetPostion()的话,可能窗口会在主显示器上面。


那么首先如何简单准确地获得显示器的数量和每一个显示器的尺寸呢? 下列两行代码可以帮你解决问题。displays 可以理解为wx.Display实力的列表。第二行代码返回一个尺寸,也就是分辨率的列表。

该列表保存了所有现实的分辨率信息。

displays = (wx.Display(i) for i in range(wx.Display.GetCount()))
sizes = [display.GetGeometry().GetSize() for display in displays]

因为用户显示器的分辨率可能会发生变化。用户显示器的设置也有可能不同,有可能第二显示器在主显示器的左边,也有可能在右边。那么单单或者显示器的分辨率,手动设置位置偏移量显得有点不够高效。

首先我们要确定,主窗口或者Frame (toplevel Windows)的位置,是在主显示器上还是在第二个显示器上面。 

使用此函数来得到主窗口的位置:

rts = wx.Display.GetFromWindow(parent)

参数parent, 是需要确定位置的窗口,返回值rts有三种可能(假设有两个显示器):

-1, 窗口位于连个显示器之间

0, 主显示器上

1, 第二个显示器上。

当主窗口位于第二个现实上面的时候我们在调整窗口就要考虑偏移量。在忽略用户显示器设置的情况下,我们可以通过,

wx.Display(indexOfMonitor).GetGeometry()

此方法获得任一显示器的与主显示器的相对位置。 该方法返回Rect实例。为一个tuple。 

Rect(x, y, width, height)

x为该显示器与主显示器的(0,0)点x轴偏移量,

y为该显示器与主显示器的(0,0)点y轴偏移量。

可以通过:

offset_x_pos = wx.Display(indexOfMonitor).GetGeometry().GetX()
offset_y_pos = wx.Display(indexOfMonitor).GetGeometry().GetY()

获得单一轴的偏移量或者通过:

wx.Display(indexOfMonitor).GetGeometry().GetPosition()

一次获得两个轴的偏移量。



本文出自 “EIT流浪汉” 博客,请务必保留此出处http://zicowarn.blog.51cto.com/3815716/1765440

wxPython 图形界面程序时 多个显示器问题。

标签:wxpython   分辨率   多显示器   程序   而且   

原文地址:http://zicowarn.blog.51cto.com/3815716/1765440

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!