如何写一个脚本自动调节显示

wen 实用脚本 2

本文目录导读:

如何写一个脚本自动调节显示

  1. 方案一:Python脚本(推荐)
  2. 方案二:Windows批处理文件
  3. 方案三:高级功能脚本
  4. 使用说明
  5. 最佳实践推荐

我来为您提供一个在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版本)

  1. 安装Python 3.6+
  2. 安装依赖:
    pip install screen-brightness-control schedule pynput
  3. 将脚本保存为 .py 文件
  4. 运行:
    python brightness_controller.py

开机自启动设置

  1. Windows方法

    • 创建快捷方式
    • 放入 shell:startup 文件夹
  2. 任务计划程序

    • 创建基本任务
    • 触发器:登录时
    • 操作:启动程序

注意事项

  1. 权限问题:某些系统可能需要管理员权限
  2. 笔记本支持:部分笔记本可能需要额外的驱动
  3. 多显示器:脚本默认控制主显示器
  4. 异常处理:建议添加日志记录功能

最佳实践推荐

  1. 基础版:使用Python时间调度脚本
  2. 专业版:添加环境光检测和快捷键功能
  3. 企业版:结合Windows任务计划程序实现自动化

这些脚本可以满足从基础到高级的各种亮度调节需求,您可以根据自己的具体需求选择合适的方案。

抱歉,评论功能暂时关闭!