A-A+

python 获取显示器列表并将窗口定位到特定显示器上

2023年07月18日 17:52 汪洋大海 暂无评论 共1060字 (阅读1,000 views次)

最近在用Python搞一个带图形界面的小工具,在连接了多显示器的电脑上,运行Python GUI程序(PySide6),想问一下,有没有什么python库或者方法能够满足如下条件:

1、读取显示器列表

2、将某个窗口显示在指定显示器上

 

GPT4的回答:

在 Python 中,处理多显示器布局并将窗口定位到特定的显示器上并不是一个内置的功能。然而,你可以通过一些库如 PyGetWindow, PySide6 以及系统级的调用来达到你的目标。

以下是一个可能的解决方案:

1. **获取显示器列表**:使用 `screeninfo` 库可以获取所有连接的显示器的信息。你可以通过 `pip install screeninfo` 来安装这个库。以下是如何使用它的一个简单示例:

from screeninfo import get_monitors

for m in get_monitors():
print(str(m))

2. **将窗口定位到特定显示器上**:要将 PySide6 的窗口定位到特定的显示器上,你可以使用 `QDesktopWidget` 类的 `screenGeometry` 方法来获取各个显示器的几何信息,然后使用 `QWidget` 的 `move` 方法将窗口移到指定显示器上。以下是一个简单的示例:

from PySide6.QtWidgets import QApplication, QMainWindow, QDesktopWidget

app = QApplication([])

# 创建主窗口
window = QMainWindow()
window.show()

# 获取所有显示器的几何信息
desktop = QApplication.desktop()
screen_count = desktop.screenCount()

# 将窗口移动到第二个显示器(如果存在的话)
if screen_count > 1:
rect = desktop.screenGeometry(1) # 获取第二个显示器的几何信息
window.move(rect.left(), rect.top()) # 移动窗口

app.exec_()

请注意,以上代码假设显示器的索引从 0 开始,所以 `screenGeometry(1)` 是获取第二个显示器的几何信息。如果你只有一个显示器,尝试访问索引为 1 的显示器将会抛出一个错误。

最后,记住这些方法可能不会在所有系统和所有显示器配置下都能正常工作。在多显示器布局中,显示器的索引和位置可能会根据你的操作系统和显示器设置的不同而不同。你可能需要进行一些实验来找出在你的特定配置中如何最好地定位窗口。

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言