本文目录导读:

我来为您提供一个在Windows系统上自动调节显示亮度的Python脚本,以及一个更专业的方案。
Python脚本(推荐)
安装依赖
pip install screen-brightness-control pyautogui schedule
基础亮度调节脚本
import screen_brightness_control as sbc
import time
from datetime import datetime
def set_brightness(level):
"""设置屏幕亮度 (0-100)"""
try:
sbc.set_brightness(level)
print(f"[{datetime.now().strftime('%H:%M:%S')}] 亮度已设为: {level}%")
except Exception as e:
print(f"设置亮度失败: {e}")
def get_current_brightness():
"""获取当前亮度"""
try:
return sbc.get_brightness()[0]
except:
return None
# 示例:手动设置亮度
if __name__ == "__main__":
# 设置亮度为50%
set_brightness(50)
# 获取当前亮度
current = get_current_brightness()
print(f"当前亮度: {current}%")
智能自动调节脚本(按时间)
import screen_brightness_control as sbc
import schedule
import time
from datetime import datetime
class BrightnessController:
def __init__(self):
self.time_schedule = {
# 时间段: 亮度百分比
(6, 8): 30, # 清晨
(8, 12): 50, # 上午
(12, 14): 40, # 午休
(14, 18): 50, # 下午
(18, 20): 35, # 傍晚
(20, 22): 25, # 晚上
(22, 6): 15 # 深夜
}
def set_brightness(self, level):
"""安全设置亮度"""
level = max(0, min(100, level)) # 限制范围
try:
sbc.set_brightness(level)
print(f"[{datetime.now().strftime('%H:%M:%S')}] 亮度: {level}%")
except Exception as e:
print(f"设置失败: {e}")
def auto_adjust(self):
"""根据当前时间自动调节"""
current_hour = datetime.now().hour
for (start, end), brightness in self.time_schedule.items():
if start <= end: # 正常时间段
if start <= current_hour < end:
self.set_brightness(brightness)
break
else: # 跨天时间段 (如22:00-6:00)
if current_hour >= start or current_hour < end:
self.set_brightness(brightness)
break
def run(self):
"""启动自动调节"""
print("自动亮度调节已启动...")
self.auto_adjust() # 立即执行一次
# 每30分钟检查一次
schedule.every(30).minutes.do(self.auto_adjust)
while True:
schedule.run_pending()
time.sleep(60)
if __name__ == "__main__":
controller = BrightnessController()
# 单次执行
controller.auto_adjust()
# 持续运行(取消注释下一行)
# controller.run()
快捷键控制脚本
import screen_brightness_control as sbc
from pynput import keyboard
import tkinter as tk
from tkinter import ttk
class BrightnessHotkey:
def __init__(self):
self.current_brightness = self.get_brightness()
self.step = 10 # 每次调节步长
def get_brightness(self):
try:
return sbc.get_brightness()[0]
except:
return 50
def increase_brightness(self):
self.current_brightness = min(100, self.current_brightness + self.step)
sbc.set_brightness(self.current_brightness)
print(f"亮度增加至: {self.current_brightness}%")
def decrease_brightness(self):
self.current_brightness = max(0, self.current_brightness - self.step)
sbc.set_brightness(self.current_brightness)
print(f"亮度降低至: {self.current_brightness}%")
def on_press(self, key):
# Ctrl+↑ 增加亮度
# Ctrl+↓ 降低亮度
try:
if key == keyboard.Key.up and hasattr(keyboard, 'ctrl'):
self.increase_brightness()
elif key == keyboard.Key.down and hasattr(keyboard, 'ctrl'):
self.decrease_brightness()
except:
pass
def start_listener(self):
print("快捷键已启动: Ctrl+↑/↓ 调节亮度")
with keyboard.Listener(on_press=self.on_press) as listener:
listener.join()
# 启动快捷键监听
if __name__ == "__main__":
controller = BrightnessHotkey()
controller.start_listener()
Windows批处理文件
创建一个 adjust_brightness.bat 文件:
@echo off
chcp 65001 >nul
:menu
cls
echo ========================================
echo 屏幕亮度调节工具
echo ========================================
echo 1. 设置亮度为 100%% (最高)
echo 2. 设置亮度为 75%%
echo 3. 设置亮度为 50%% (中等)
echo 4. 设置亮度为 25%%
echo 5. 设置亮度为 0%% (最低)
echo 6. 开启定时调节模式
echo 7. 查看当前亮度
echo 8. 退出
echo ========================================
set /p choice="请选择 (1-8): "
if "%choice%"=="1" (
powershell -Command "(Get-WmiObject -Namespace root/wmi -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 100)"
goto menu
)
if "%choice%"=="2" (
powershell -Command "(Get-WmiObject -Namespace root/wmi -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 75)"
goto menu
)
if "%choice%"=="3" (
powershell -Command "(Get-WmiObject -Namespace root/wmi -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 50)"
goto menu
)
if "%choice%"=="4" (
powershell -Command "(Get-WmiObject -Namespace root/wmi -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 25)"
goto menu
)
if "%choice%"=="5" (
powershell -Command "(Get-WmiObject -Namespace root/wmi -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 0)"
goto menu
)
if "%choice%"=="6" (
echo 启动定时调节模式...
:loop
set hour=%time:~0,2%
if %hour% GEQ 6 if %hour% LEQ 18 (
powershell -Command "(Get-WmiObject -Namespace root/wmi -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 70)"
) else (
powershell -Command "(Get-WmiObject -Namespace root/wmi -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 30)"
)
timeout /t 1800 /nobreak >nul
goto loop
)
if "%choice%"=="7" (
powershell -Command "(Get-WmiObject -Namespace root/wmi -Class WmiMonitorBrightness).CurrentBrightness"
pause
goto menu
)
if "%choice%"=="8" exit /b
高级功能脚本
环境光自适应调节(需要摄像头)
import screen_brightness_control as sbc
import cv2
import numpy as np
import time
class AdaptiveBrightness:
def __init__(self):
self.camera = None
def get_ambient_light(self):
"""通过摄像头检测环境光"""
try:
self.camera = cv2.VideoCapture(0)
ret, frame = self.camera.read()
if ret:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
brightness = np.mean(gray)
return brightness
return None
except:
return None
finally:
if self.camera:
self.camera.release()
def adjust_by_ambient(self):
"""根据环境光调节亮度"""
ambient = self.get_ambient_light()
if ambient is not None:
# 环境光越暗,屏幕亮度越低
target_brightness = int((ambient / 255) * 100)
target_brightness = max(10, min(100, target_brightness))
sbc.set_brightness(target_brightness)
print(f"环境光: {ambient:.0f}/255, 设置亮度: {target_brightness}%")
def run(self):
print("自适应亮度调节启动中...")
while True:
self.adjust_by_ambient()
time.sleep(60) # 每分钟检查一次
if __name__ == "__main__":
controller = AdaptiveBrightness()
controller.run()
使用说明
安装方法(Python版本)
- 安装Python 3.6+
- 安装依赖:
pip install screen-brightness-control schedule pynput
- 将脚本保存为
.py文件 - 运行:
python brightness_controller.py
开机自启动设置
-
Windows方法:
- 创建快捷方式
- 放入
shell:startup文件夹
-
任务计划程序:
- 创建基本任务
- 触发器:登录时
- 操作:启动程序
注意事项
- 权限问题:某些系统可能需要管理员权限
- 笔记本支持:部分笔记本可能需要额外的驱动
- 多显示器:脚本默认控制主显示器
- 异常处理:建议添加日志记录功能
最佳实践推荐
- 基础版:使用Python时间调度脚本
- 专业版:添加环境光检测和快捷键功能
- 企业版:结合Windows任务计划程序实现自动化
这些脚本可以满足从基础到高级的各种亮度调节需求,您可以根据自己的具体需求选择合适的方案。