如何确定显示器的刷新率?
有没有跨平台的方法来获取Python(2.6)中显示器的刷新率? 我正在使用 Pygame 和 PyOpenGL,如果有帮助的话。
我不需要改变刷新率,我只需要知道它是什么。
Is there a cross platform way to get the monitor's refresh rate in python (2.6)? I'm using Pygame and PyOpenGL, if that helps.
I don't need to change the refresh rate, I just need to know what it is.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我不确定您使用的平台,但在 Windows 上您可以使用 ctypes 或 win32api 来获取有关设备的详细信息,例如
在我的系统上使用 win32api 输出:
I am not sure about the platform you use, but on window you can use ctypes or win32api to get details about devices e.g. using win32api
output on my system:
您可以使用 pygame 时钟
在代码末尾:
时钟.tick(fps)
You can use the pygame clock
At the end of the code:
clock.tick(fps)
在 macOS 上,您可以使用
pyobjc
查询所有附加的刷新率显示。 为此,您需要 Cocoa(即“AppKit”)框架:然后,在 Python 中:
在我的系统上,这会产生:(
这是正确的,我的显示器确实都设置为 120Hz 刷新)
在 Linux 上,您可以使用
python-xlib
:适当的屏幕索引号以及您希望 PyOpenGL 窗口打开的位置留给读者作为练习:)。
(我不会在这里重复 Anurag 对 Windows 的回答,特别是因为我无法测试它,但这就是您在该平台上执行此操作的方式。)
On macOS, you can use
pyobjc
to query the refresh rate of all the attached displays. You'll need theCocoa
(i.e. "AppKit") framework for this:then, in Python:
On my system, this produces:
(Which is correct, my displays are indeed both set to a 120Hz refresh rate.)
On Linux, you can use
python-xlib
:Associating the appropriate screen index number with the place you want your PyOpenGL window to open up on is left as an exercise for the reader :).
(I won't duplicate Anurag's answer for Windows here, especially since I can't test it, but that's how you would do it on that platform.)
您可以使用DEVMODEW,但这仅适用于Windows计算机。
使用 pip 和“pip install wmi”安装“wmi”
You can use DEVMODEW, but this only works on Windows Machines.
Install 'wmi' using pip with "pip install wmi"
我建议切换到
pygame
的社区版。 他们的网站 https://pyga.me/。 长话短说,pygame 前核心开发人员在为原始开发上游做出贡献时遇到了挑战,因此他们分叉了存储库并转移到这个新发行版,旨在提供更频繁的发布、持续的错误修复和增强以及更民主的治理模型(开源的魔力)。 您可以通过运行pip uninstall pygame
然后运行pip install pygame-ce --upgrade
轻松切换到它。 它们具有与原始 pygame 相同的 API(因此您仍然使用 import pygame 并且一切都保持不变)。它们有许多不错的新功能和错误修复,包括在
display
模块中获取显示器刷新率的方法:在我的计算机上,此打印
确实是正确的。
I recommend switching to the community edition of
pygame
. Their website https://pyga.me/. Long story short, the pygame former core developers had challenges contributing to the original development upstream, so they forked the repository and moved to this new distribution that aims to offer more frequent releases, continuous bug fixes and enhancements, and a more democratic governance model (The magic of Open Source). You can easily switch to it by runningpip uninstall pygame
and thenpip install pygame-ce --upgrade
. They have the same API as the originalpygame
(so you still useimport pygame
and everything remains the same).They have many nice new features and bug fixes, including methods to get the monitor's refresh rate in the
display
module:On my computer, this prints
which is indeed correct.