Python设置显示屏分辨率

简介: Python设置显示屏分辨率

工具安装

  • 主要调用win32库实现分辨率获取和读写,需要安装pywin32
  • 示例中是从execl列表中读取需要设置的分辨率,需要安装xlrd
  • 用到的execl分辨率列表如下:

在这里插入图片描述

pip install pywin32
pip install xlrd

完整脚本

import win32api,win32con,time,xlrd

"""
Author:NoamaNelson
Date:2019-11-26
Discription: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 = 0
while(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

输出的结果

在这里插入图片描述

存在的问题

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

参考资料

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

目录
相关文章
|
8月前
|
数据安全/隐私保护 Python
Python实现邮件发送(含详细设置方法),并总结自己遇到的错误
Python实现邮件发送(含详细设置方法),并总结自己遇到的错误
|
4月前
|
API Python
使用Python requests库下载文件并设置超时重试机制
使用Python的 `requests`库下载文件时,设置超时参数和实现超时重试机制是确保下载稳定性的有效方法。通过这种方式,可以在面对网络波动或服务器响应延迟的情况下,提高下载任务的成功率。
204 1
|
5月前
|
移动开发 Java 编译器
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
70 1
|
6月前
|
数据安全/隐私保护 Python
【Python】已解决:urllib模块设置代理ip
【Python】已解决:urllib模块设置代理ip
95 2
【Python】已解决:urllib模块设置代理ip
|
6月前
|
IDE 数据可视化 安全
Python学习中设置开发环境
【7月更文挑战第26天】
47 2
|
5月前
|
Python Windows 内存技术
【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
|
5月前
|
NoSQL 网络安全 Redis
用python安装redis并设置服务自启
用python安装redis并设置服务自启
33 0
|
6月前
|
机器学习/深度学习 编解码 算法框架/工具
使用Python实现深度学习模型:图像超分辨率与去噪
【7月更文挑战第17天】 使用Python实现深度学习模型:图像超分辨率与去噪
170 4
|
5月前
|
Linux UED iOS开发
Python colorama 设置控制台、命令行输出彩色文字
Python colorama 设置控制台、命令行输出彩色文字
80 0
|
5月前
|
Python
Python 设置环境变量方法
Python 设置环境变量方法
61 0