Python实现设置显示屏分辨率

作者:虫无涯 时间:2021-05-16 01:32:36 

工具安装

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

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

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

Python实现设置显示屏分辨率

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

输出的结果

Python实现设置显示屏分辨率

存在的问题

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

来源:https://segmentfault.com/a/1190000043288975

标签:Python,显示屏,分辨率
0
投稿

猜你喜欢

  • php获取文件扩展名的3种方法实例

    2023-05-25 02:15:51
  • golang 调用c语言动态库方式实现

    2024-05-22 17:51:02
  • 用Python制作在地图上模拟瘟疫扩散的Gif图

    2022-09-26 17:20:22
  • Python干货实战之逆向登录世界上最大的游戏平台Stream

    2023-05-13 11:25:19
  • Python安装使用命令行交互模块pexpect的基础教程

    2023-07-09 22:43:40
  • Mysql InnoDB引擎中的数据页结构详解

    2024-01-16 20:51:29
  • Go语言使用读写OPC详解

    2024-05-21 10:23:06
  • react-native ListView下拉刷新上拉加载实现代码

    2023-07-02 06:35:34
  • innodb_index_stats导入备份数据时报错表主键冲突的解决方法

    2024-01-19 19:33:51
  • SQL Server 2005安装配置方法图文教程 完美兼容Win7所有版本

    2024-01-21 04:38:43
  • 解析MySQL数据库性能优化的六大技巧

    2024-01-13 02:18:49
  • Python制作运行进度条的实现效果(代码运行不无聊)

    2021-04-11 15:46:10
  • 浏览器根据什么来判定脚本失控?[译]

    2009-02-20 13:36:00
  • ORACLE 自动提交问题

    2009-06-19 17:58:00
  • 别人复制你网站的文章时自动加上注释

    2009-02-09 13:20:00
  • mysql 模糊查询 concat()的用法详解

    2024-01-14 01:48:46
  • pygame实现雷电游戏雏形开发

    2021-04-14 13:52:31
  • SQL Server利用sp_spaceused如何查看表记录存在不准确的情况

    2024-01-20 07:40:10
  • 关于Vue3中的响应式原理

    2024-04-30 10:29:23
  • 使用url_helper简化Python中Django框架的url配置教程

    2023-01-10 14:44:51
  • asp之家 网络编程 m.aspxhome.com