用python写了一个调节计算机性能的带GUI界面的程序,可以让电脑风扇不转,减少夏天...

查看 119|回复 11
作者:zigzag   
用python写了一个调节性能的带GUI界面的程序,可以让电脑风扇不转,减少夏天笔记本噪音...
也可以把i7 cpu 降级成 i5  i3 奔腾,赛扬。
提升续航,降低噪音。神州笔记本好帮手,
[Python] 纯文本查看 复制代码import subprocess
import tkinter as tk
from tkinter import ttk, messagebox
def set_processor_power_settings(min_state, max_state, power_scheme):
    try:
        # 设置处理器最小状态
        subprocess.run(
            ["powercfg", "/setacvalueindex" if power_scheme == "AC" else "/setdcvalueindex", "SCHEME_CURRENT",
             "SUB_PROCESSOR", "PROCTHROTTLEMIN", str(min_state)],
            check=True,
            shell=True,
        )
        # 设置处理器最大状态
        subprocess.run(
            ["powercfg", "/setacvalueindex" if power_scheme == "AC" else "/setdcvalueindex", "SCHEME_CURRENT",
             "SUB_PROCESSOR", "PROCTHROTTLEMAX", str(max_state)],
            check=True,
            shell=True,
        )
        # 应用更改
        subprocess.run(["powercfg", "/setactive", "SCHEME_CURRENT"], check=True, shell=True)
        messagebox.showinfo(
            "成功",
            f"已设置处理器最小状态为 {min_state}%,最大状态为 {max_state}% ({power_scheme} 模式)",
        )
    except subprocess.CalledProcessError as e:
        messagebox.showerror("错误", f"设置处理器电源管理失败: {e}")
def create_gui():
    # 创建主窗口
    root = tk.Tk()
    root.title("CPU 电源管理工具")
    # 设置最小窗口尺寸并居中
    root.minsize(300, 200)
    root.update_idletasks()  # 确保窗口管理器处理配置
    # 计算居中位置
    screen_width = root.winfo_screenwidth()
    screen_height = root.winfo_screenheight()
    window_width = 300
    window_height = 300
    x = (screen_width - window_width) // 2
    y = (screen_height - window_height) // 2
    root.geometry(f"{window_width}x{window_height}+{x}+{y}")
    # 添加窗口图标(需要准备favicon.ico文件)
    try:
        root.iconbitmap("favicon.ico")
    except tk.TclError:
        print("警告:未找到favicon.ico,将使用默认窗口图标")
    # 创建主标签(使用grid布局保证完整显示)
    title_label = tk.Label(root, text="CPU 电源管理工具", font=("Arial", 16, "bold"))
    title_label.grid(row=0, column=0, padx=10, pady=10, sticky="ew")
    root.grid_rowconfigure(0, weight=1)
    root.grid_columnconfigure(0, weight=1)
    # 自定义设置部分
    custom_frame = ttk.LabelFrame(root, text="自定义设置", padding=10)
    custom_frame.grid(row=1, column=0, padx=10, pady=10, sticky="nsew")
    root.grid_rowconfigure(1, weight=1)
    root.grid_columnconfigure(0, weight=1)
    # 最大状态滑块(从左到右,0-100)
    max_state_var = tk.IntVar(value=100)
    max_state_scale = ttk.Scale(
        custom_frame,
        from_=0,  # 起始值
        to=100,  # 结束值
        variable=max_state_var,
        length=200,  # 调整滑块长度适应新窗口尺寸
        orient="horizontal"
    )
    max_state_scale.grid(row=0, column=0, padx=10, pady=10, sticky="ew")
    # 滑块数值显示(添加在滑块右侧)
    max_state_display = tk.Label(custom_frame, text="100%", width=5, anchor="e")
    max_state_display.grid(row=0, column=1, padx=(0, 10), pady=10, sticky="e")
    # 更新数值显示的回调函数
    def update_display(*args):
        value = max_state_var.get()
        max_state_display.config(text=f"{value}%")
    max_state_var.trace_add("write", update_display)  # 绑定变量变化事件
    update_display()  # 初始化显示
    # 电源模式选择(水平排列)
    power_scheme_var = tk.StringVar(value="AC")
    power_frame = ttk.Frame(custom_frame)
    power_frame.grid(row=1, column=0, columnspan=2, padx=10, pady=5, sticky="ew")
    ttk.Radiobutton(
        power_frame,
        text="AC 模式",
        variable=power_scheme_var,
        value="AC"
    ).pack(side="left", padx=(0, 20))
    ttk.Radiobutton(
        power_frame,
        text="电池模式",
        variable=power_scheme_var,
        value="DC"
    ).pack(side="left")
    # 提交按钮(居中显示)
    submit_frame = ttk.Frame(custom_frame)
    submit_frame.grid(row=2, column=0, columnspan=2, padx=10, pady=20, sticky="ew")
    submit_button = ttk.Button(
        submit_frame,
        text="应用设置",
        command=lambda: on_submit(max_state_var, power_scheme_var),
        width=15,
    )
    submit_button.pack(side="top")  # 默认居中
    # 提交逻辑
    def on_submit(max_state_var, power_scheme_var):
        try:
            # 固定最小状态为1%
            min_state = 1
            max_state = max_state_var.get()
            power_scheme = power_scheme_var.get()
            if 0

状态, 窗口

xingdh   

楼主是用python调用powercfg来设置电源管理,从而达到调节CPU运行速度的吧,EPP是Windows调频调度中的一个重要参数,可以用来对笔记本的续航和性能做调节,但对于台式机好像没什么效果。
xingdh   


cc5i1 发表于 2025-5-9 08:37
还有这种情况哇,先看看

因为Win11下把节电单独列出了,剩余3个滑块名称改名为最佳能效(最长的续航),平衡(更好的性能),最佳性能(最佳性能),与win10不一样的。
zx360717966   

哇哦。太厉害了,感谢分享!
c4mpj007   

太厉害了,感谢分享!
ManaCola   

牛的楼主,希望不会蓝屏,之前用别的楼主搞得360脱机版注册表优化,直接把win11的本子整蓝屏了
applepv   

哪位大神弄个成品呗,,,不会搞呐
Bingo2018   

能一键把CPU干到发骚模式吗
yurit   

其实就是用 powercfg 的命令修改吗?感觉挺好,适合出差时候用。
applepv   

刚跑去百度了,,生成出来了,,10.7M,还是好用的,,但是,,把它关了,,不怕CPU发烫嘛
您需要登录后才可以回帖 登录 | 立即注册

返回顶部