设为首页 收藏本站
查看: 926|回复: 0

[经验分享] wxPython 图形界面程序时 多个显示器问题

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-20 09:14:57 | 显示全部楼层 |阅读模式
在使用wxpython的时候也许会遇见这样的问题。软件用户或者潜在用户可能使用多个显示器,而且显示器设置并不是简单的投影而是扩展设置,这样的话,显示器的尺寸就超过了单一显示器的尺寸,而是两个现实器的综合。


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


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

该列表保存了所有现实的分辨率信息。
1
2
displays = (wx.Display(i) for i in range(wx.Display.GetCount()))
sizes = [display.GetGeometry().GetSize() for display in displays]



因为用户显示器的分辨率可能会发生变化。用户显示器的设置也有可能不同,有可能第二显示器在主显示器的左边,也有可能在右边。那么单单或者显示器的分辨率,手动设置位置偏移量显得有点不够高效。
首先我们要确定,主窗口或者Frame (toplevel Windows)的位置,是在主显示器上还是在第二个显示器上面。
使用此函数来得到主窗口的位置:
1
rts = wx.Display.GetFromWindow(parent)



参数parent, 是需要确定位置的窗口,返回值rts有三种可能(假设有两个显示器):
-1, 窗口位于连个显示器之间
0, 主显示器上
1, 第二个显示器上。
当主窗口位于第二个现实上面的时候我们在调整窗口就要考虑偏移量。在忽略用户显示器设置的情况下,我们可以通过,
1
wx.Display(indexOfMonitor).GetGeometry()



此方法获得任一显示器的与主显示器的相对位置。 该方法返回Rect实例。为一个tuple。
Rect(x, y, width, height)x为该显示器与主显示器的(0,0)点x轴偏移量,

y为该显示器与主显示器的(0,0)点y轴偏移量。
可以通过:
1
2
offset_x_pos = wx.Display(indexOfMonitor).GetGeometry().GetX()
offset_y_pos = wx.Display(indexOfMonitor).GetGeometry().GetY()



获得单一轴的偏移量或者通过:
1
wx.Display(indexOfMonitor).GetGeometry().GetPosition()



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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-206318-1-1.html 上篇帖子: python 里面的 ssh 里面的bh_sshRcmd.py 下篇帖子: 升级python3.0后 yum报错 显示器 程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表