如何使用Python调整Windows 11屏幕色温(滤色)及亮度
解决方案:Windows 11下Python实现屏幕亮度调节与红色滤镜
一、屏幕亮度调节库推荐
- screen_brightness_control:你找到的这个库是Windows平台亮度调节的首选之一,支持多显示器操作,用法简洁:
import screen_brightness_control as sbc # 获取当前屏幕亮度 current_brightness = sbc.get_brightness() # 设置全局亮度为50% sbc.set_brightness(50) # 给第二台显示器设置亮度为75% sbc.set_brightness(75, display=1) - pywin32:如果需要更底层的系统级操作,可以用这个库调用Windows原生API实现亮度调节,适合需要自定义逻辑的场景,但代码相对繁琐。
二、屏幕红色滤镜(色温调节)实现方案
目前没有专门的Python库直接支持Windows色温调节,可通过以下两种方式实现:
1. 调用Windows Gamma校准API(需管理员权限)
通过pywin32调用系统API修改RGB通道增益,实现偏红的滤镜效果:
import win32api import win32con # 开启红色滤镜:降低绿、蓝通道增益 def enable_red_filter(): hdc = win32api.GetDC(0) # 生成Gamma曲线:红色保持正常,绿、蓝通道降低 gamma_ramp = [ list(range(256)) * 3, # 红色通道 [int(i * 0.3) for i in range(256)] * 3, # 绿色通道保留30% [int(i * 0.2) for i in range(256)] * 3 # 蓝色通道保留20% ] win32api.SetDeviceGammaRamp(hdc, gamma_ramp) win32api.ReleaseDC(0, hdc) # 恢复默认色温 def disable_red_filter(): hdc = win32api.GetDC(0) # 生成线性默认Gamma曲线 default_ramp = [list(range(256)) for _ in range(3)] win32api.SetDeviceGammaRamp(hdc, default_ramp) win32api.ReleaseDC(0, hdc) # 使用示例 enable_red_filter() # 用完后记得恢复默认 # disable_red_filter()
注意:运行此代码需要管理员权限,否则会执行失败。
2. 创建半透明顶层窗口(无需权限)
通过创建全屏半透明红色窗口模拟滤镜效果,适合普通桌面场景:
import tkinter as tk def launch_red_filter(): root = tk.Tk() # 全屏显示 root.attributes('-fullscreen', True) # 窗口始终置顶 root.attributes('-topmost', True) # 设置红色半透明背景(alpha值0.2可按需调整) root.attributes('-alpha', 0.2) root.configure(bg='red') # 按ESC键退出滤镜 root.bind('<Escape>', lambda e: root.destroy()) root.mainloop() # 启动红色滤镜 launch_red_filter()
此方法无需权限,但会覆盖所有窗口,可能影响部分全屏应用操作。
内容的提问来源于stack exchange,提问作者Nikolay Hranov
相关产品推荐
相关产品推荐

