Ing*_*kat 4 python pygtk screen gdk
我想要整个桌面的 X/Y 像素尺寸(可能跨越多个显示器),例如确定背景图像的最佳分辨率。
这段 Python 代码仍然有效:
from gi import require_version
require_version("Gdk", "3.0")
from gi.repository import Gdk
screen = Gdk.Screen.get_default()
print(screen.get_width(), " ", screen.get_height())
Run Code Online (Sandbox Code Playgroud)
但打印出弃用警告:
<string>:7: DeprecationWarning: Gdk.Screen.get_width is deprecated
<string>:7: DeprecationWarning: Gdk.Screen.get_height is deprecated
Run Code Online (Sandbox Code Playgroud)
Gdk.Screen API 文档仅指出:
自版本 3.22 起已弃用:改为使用每个监视器信息
其他答案(例如How do I get Monitor resolution in Python或How to detector a computer'sphysical screen size in GTK)提到了许多其他 API 和工具包,或者只是提供每个显示器的信息(例如PyGtk),但我认为它应该仍然可以(也在将来)通过 PyGtk 获取整个桌面的尺寸。(毕竟,已弃用的函数仍然提供了此功能。)
根据删除这些 API 调用的提交,GDK 用于计算屏幕尺寸的算法似乎基本上是这样的:
def get_screen_size(display):
mon_geoms = [
display.get_monitor(i).get_geometry()
for i in range(display.get_n_monitors())
]
x0 = min(r.x for r in mon_geoms)
y0 = min(r.y for r in mon_geoms)
x1 = max(r.x + r.width for r in mon_geoms)
y1 = max(r.y + r.height for r in mon_geoms)
return x1 - x0, y1 - y0
# example use
print(get_screen_size(Gdk.Display.get_default()))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2608 次 |
| 最近记录: |