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()

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

时间: 2024-12-12 17:33:16

wxPython 图形界面程序时 多个显示器问题。的相关文章

linux启动后自动登录并运行自定义图形界面程序

在<Ubuntu CTRL+ALT+F1~F6 进入命令模式后不支持中文显示的解决办法>一文中提到linux启动在以后运行一个独占显示器的图形程序的两种办法. 1.不启动xserver,使用fb或者directfb图形模式: 2.启动xserver不启动桌面系统. 第一种方法性能并不一定高,因为支持fb的显卡驱动可能找不到,就是用上显卡驱动了也需要CPU大量参与.另外如果用这种方式可供选择的图形程序开发技术就受限了.所以这种方法通常用在嵌入式环境下. 第二种方法只要显卡驱动了,CPU就能得到解

Quartz(GUI)图形界面程序----Quartz Web

下载.设置和运行Quartz(GUI)图形界面程序----Quartz Web 一.获取Quartz Web程序(Quartz GUI).早期的 Quartz 框架开发者意识到一个 GUI 对于某类用户群体是必需的.几年前,一个 Web 应用被创立,它可用于管理 Quartz 框架.虽说是历经了几年有相当投入的开发,但不得不说的,总是时断时续的.近来出现有更多的要求对这个应用的更新与支持,因而又重新吸引了新的开发者自愿的工作并使之保持不断更新.这个应用就是知名的 Quartz Web 程序.Qu

在ubuntu上使用wxWidgets成功开发一个图形界面程序

编译wxWidgets 下载最新版的源码,wxWidgets-3.0.2.wxWidgets在liunx是通过wxGTK实现的.wxGTK和wxWidgets的源码打包在一起.wxGTK依赖GTK+,当前版本依赖高于2.8.2的版本.我安装了3.0版本的GTK+.apt-get install gtk+-3.0-dev.一般开发用的库,都有个-dev结尾,这是个约定.开发用的库包含了头文件和文档之类的东西. 为了让不同平台wxWidgets编译之后放到各自的文件夹下,先在解压得到的文件夹下创建一

Java swing五子棋源码及实现之Java 开发图形界面程序五子棋的实现方式

今天给大家介绍一下如何用Java swing实现五子棋的开发即用Java开发图形界面程序五子棋,代码由于太多,只贴部分,最下面会附上下载地址,废话不多说,下面我们先看一下运行结果: 接下来我们看代码: 首先是创建主frame框架界面: package org.liky.game.frame; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; import

使用XMing+putty运行linux图形界面程序

欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! 起因接下去的工作要作一些数值模拟,于是到师兄的工作站上开了个帐号.工作站运行的是RHEL4,要说远程SSH,就算是FTerm也足够胜任,不过,因为我要用的查看计算结果的软件需要使用图形界面,这一点就比较麻烦了.用VNC,一来耗费资源,二来VNC在win下的表现实在不咋样.参考记起上学期的VLSI设计的计算机实验,几十个人从运行Windows XP

为CentOS7(文字界面操作)系统安装gnome图形界面程序

1.安装gnome sudo yum groupinstall "GNOME Desktop" "Graphical Administration Tools" 2.更新系统的运行级别 如果你想在系统下次启动的时候自动进入图形界面,那么我们需要更改系统的运行级别,输入下面的命令来启用图形界面: sudo ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target 3.重

用Nim语言开发windows GUI图形界面程序

前言 本文得到了“樂師”的大力支持, 我们一起调试程序到深夜,要是没有他的帮忙, 我不知道要多久才能迈过这道坎, 另外“归心”还有其他人也提供了帮助, 他们都来自于QQ群:“Nim开发集中营”469329878: 感兴趣的朋友,可以加这个群一起讨论 配置GUI开发环境 我在这篇博客中,写到了Nim开发环境的搭建 那篇博客中说MingW是必选的, 这对于开发一个普通的Nim程序来说,没有问题,但要开发GUI程序,还不够 官方安装包中所包含的的MingW安装包有点问题 如果你用编译命令:--app:

安装gnome图形界面程序

在安装Gnome包之前,需要检查一下安装源(yum)是否正常,因为需要在yum命令来安装gnome包. 第一步:先检查yum 是否安装了,以及网络是否有网络.如果这两者都没有,先解决网络,在解决yum的安装. (配置步骤可以查看我的博客文章-centOS-配置网络地址-的步骤来实现 ) 第二步:在命令行下 输入下面的命令来安装Gnome包. # yum groupinstall "GNOME Desktop" "Graphical Administration Tools&q

树莓派图形界面卡死时的处理

树莓派通常是通过ssh连接在字符界面使用,或者vnc连接来使用的.偶尔我们会遇到桌面进程卡死的状况,具体表现为图标和任务栏按钮无反应,但CPU等负载一切正常.这种情况,除了重启机器之外,还可以通过重启图形界面进程的方式进行修复. 首先,用ssh连接进入字符终端 [email protected]:~ $ ps -t tty7 PID TTY TIME CMD 9493 tty7 00:00:14 Xorg (tty1-6是文本型控制台,tty7是X Window图形显示管理器,这里我们查找到图形