写点什么

Python 设置显示屏分辨率

作者:虫无涯
  • 2023-02-20
    陕西
  • 本文字数:1264 字

    阅读完需:约 4 分钟

工具安装

  • 主要调用 win32 库实现分辨率获取和读写,需要安装 pywin32

  • 示例中是从 execl 列表中读取需要设置的分辨率,需要安装 xlrd

  • 用到的 execl 分辨率列表如下:


pip install pywin32pip install xlrd
复制代码

完整脚本

import win32api,win32con,time,xlrd
"""Author:NoamaNelsonDate:2019-11-26Discription:Python sets the resolution of Windows computer graphics card and obtains the resolution"""
book1 = xlrd.open_workbook('常见分辨率.xlsx') # 打开表格q = book1.sheet_by_index(0) # 使用索引的方式获取sheet1工作簿i = 0while(i<=5): print("第%d次设置"%i) mwidth = str(q.cell_value(i+1,0)) # 获取单元格中的值 nwidth = mwidth.split(".")[0] # 获取的值为float,转换成字符串然后进行分割取整 WidthSet = int(nwidth) # 从表格中获取的分辨率宽的值 #print(WidthSet)
mhigth = str(q.cell_value(i+1,1)) # 获取单元格中的值 nhigth = mhigth.split(".")[0] # 获取的值为float,转换成字符串然后进行分割取整 HeightSet = int(nhigth) # 从表格中获取的分辨率宽的值 #print(HeightSet) ResoLutionSet = win32api.EnumDisplaySettings(None, 0) # 调用win32api接口,获取显示设备信息
ResoLutionSet.PelsHeight = HeightSet # 设置分辨率高 ResoLutionSet.PelsWidth = WidthSet # 设置分辨率宽 print("设置的分辨率宽: %d, 设置的分辨率高: %d, 即设置的分辨率为:%d x %d" % (WidthSet, HeightSet, WidthSet, HeightSet))
ResoLutionSet.BitsPerPel = 32 # 显示设备的颜色分辨率 ResoLutionSet.DisplayFixedOutput = 2 # 设置分辨率后拉伸画面,否则切换到小分辨率时,屏幕只在中间一小块
if (win32api.ChangeDisplaySettings(ResoLutionSet, 0)) == 0: # DISP_CHANGE_SUCCESSFUL win32api.ChangeDisplaySettings(ResoLutionSet, 0) # 设置生效 else: win32api.ChangeDisplaySettings(None, 0) # 恢复默认
screenNum = win32api.GetSystemMetrics(win32con.SM_CMONITORS) print("显示设备的总数量为: %d" % screenNum)
aScreenWidth = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN) aScreenHeight = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN) print("当前屏幕总的分辨率为:%d × %d " % (aScreenWidth, aScreenHeight))
WidthGet = win32api.GetSystemMetrics(win32con.SM_CXSCREEN) # 获得屏幕分辨率X轴 HeightGet = win32api.GetSystemMetrics(win32con.SM_CYSCREEN) # 获得屏幕分辨率Y轴 print ("获取的分辨率宽: %d, 获取的分辨率高: %d, 即获取的分辨率为:%d x %d" % (WidthGet, HeightGet, WidthGet, HeightGet)) time.sleep(3) i += 1
复制代码

输出的结果

存在的问题

目前使用这种方式,只能设置显卡列表支持的分辨率,不支持自定义分辨率。不知道有什么更好的方式,有知道的大牛给指导下。

参考资料

微软官方资料其他博客说明

发布于: 刚刚阅读数: 3
用户头像

虫无涯

关注

专注测试领域各种技术研究、分享和交流~ 2019-12-11 加入

CSDN测试领域优质创作者 | CSDN博客专家 | 阿里云专家博主 | 华为云享专家 | 51CTO专家博主

评论

发布
暂无评论
Python设置显示屏分辨率_Python_虫无涯_InfoQ写作社区