有没有一种很好的跨平台方式来获取屏幕尺寸?我经常使用PerlTk来实现这一点:
use Tk;
my $mw = MainWindow->new;
my $screen_width = $mw->screenwidth();
my $screen_height = $mw->screenheight();
但是最好不要为了这样做而加载所有的Tk。
这看起来像是一个很好的X11特定的方式来完成这些事情(GetRootWindow应该适用于屏幕尺寸):
Perl:使用X11 WindowID获取窗口的几何结构
但我认为跨平台的方法会更好。
具体来说,我正在寻找确定以像素为单位的监视器尺寸的方法,这是Tk的screenwidth和screenheight返回的值。
2条答案
按热度按时间0mkxixxg1#
在大多数POSIX-y系统上:
调整屏幕大小时,这些值不会自动更新。
anauzrmj2#
我所能看到的获得显示/屏幕分辨率的最好方法是合并特定于操作系统的工具。
在X11上,最好的选择可能是
xrandr
†,而在Windows上,最好的选择可能是Win32::GUI
或Win32::API
。然后将其 Package 在一个sub中,该sub检查操作系统(使用$^O等)并选择要使用的工具。
(Or当然使用GUI包,如OP正在使用
Perl/Tk
)†例如
有很多方法来解析它,原则上我推荐使用库来管理外部程序(特别是为了得到它们的输出/错误等);这是一个快速演示。
在我的系统上,
xrandr
输出如下所示它会一直持续下去,然后是所有的显示器。
因此,我为列出的第一个(“主”)选择最高分辨率