侧边栏壁纸
博主头像
xiaohui

海纳百川有容乃大 壁立千仞无欲则刚

  • 累计撰写 29 篇文章
  • 累计收到 52 条评论

定时关机软件

2025-4-28 / 7 评论 / 4445 阅读

定时关机软件
版本:v1.0
发布日期:2025年4月28日
开发语言:Python 3
运行环境:Windows 7及以上(Windows 7及以下需预装 Python 3.3)
授权协议:免费软件
安全性:绿色版,无病毒,无捆绑,无广告
有原代码

📌 软件简介
定时关机软件是一款轻量级的系统辅助工具,支持快速设置定时关机或重启任务,操作简便,界面清爽,适用于各种办公与日常使用场景。

✨ 核心功能
定时关机:根据设定时间,自动关闭计算机。

定时重启:根据设定时间,自动重启计算机。

轻量运行:软件体积小,资源占用极低。

绿色安全:无需安装,拷贝即用,无后台驻留。

📥 下载地址
夸克网盘
蓝奏云(密码:f423)

📷 软件截图
软件截图
⚙️ 使用说明
打开软件,选择关机或重启模式。

设置定时的具体时间(单位:秒/分钟)。

点击【开始定时】按钮,软件将在设定时间执行操作。


🛠️ 源代码


'''python'''`
import os
import time
import tkinter as tk
from tkinter import messagebox
from threading import Thread
from datetime import datetime, timedelta
import webbrowser

# 定时关机函数
def shutdown():
    if os.name == 'nt':  # Windows 系统
        os.system("shutdown /s /f /t 0")
    else:  # Linux / macOS 系统
        os.system("sudo shutdown -h now")

# 定时重启函数
def restart():
    if os.name == 'nt':  # Windows 系统
        os.system("shutdown /r /f /t 0")
    else:  # Linux / macOS 系统
        os.system("sudo reboot")

# 取消关机函数
def cancel_shutdown():
    if os.name == 'nt':  # Windows 系统
        os.system("shutdown /a")
    else:  # Linux / macOS 系统
        os.system("sudo shutdown -c")
    messagebox.showinfo("提示", "关机任务已取消!")

# 在倒计时时提醒用户
def countdown_reminder(target_time):
    current_time = datetime.now()
    remaining_time = target_time - current_time
    while remaining_time.total_seconds() > 0:
        if remaining_time.total_seconds() in [60, 30, 15, 10, 5, 1]:  # 提前提醒
            messagebox.showinfo("提示", f"{int(remaining_time.total_seconds())}秒后系统将关机!")
        time.sleep(1)
        remaining_time = target_time - datetime.now()

# 计算剩余时间并执行定时关机
def schedule_shutdown(target_time, is_reboot=False):
    countdown_thread = Thread(target=countdown_reminder, args=(target_time,))
    countdown_thread.start()

    # 等待到达目标时间
    current_time = datetime.now()
    remaining_time = target_time - current_time
    if remaining_time.total_seconds() > 0:
        time.sleep(remaining_time.total_seconds())  # 等待直到目标时间
        if is_reboot:
            restart()
        else:
            shutdown()
    else:
        messagebox.showerror("错误", "目标时间必须在当前时间之后!")

# 获取用户输入并启动定时关机或重启
def start_shutdown():
    try:
        # 获取具体日期和时间的输入
        if use_datetime.get():
            year = int(entry_year.get())
            month = int(entry_month.get())
            day = int(entry_day.get())
            hour = int(entry_hour.get())
            minute = int(entry_minute.get())
            second = int(entry_second.get())
            # 拼接成目标时间
            target_time = datetime(year, month, day, hour, minute, second)
        else:
            # 获取多久后自动关机的输入
            hours_after = int(entry_hours_after.get())
            minutes_after = int(entry_minutes_after.get())
            seconds_after = int(entry_seconds_after.get())
            # 当前时间加上指定的间隔
            target_time = datetime.now() + timedelta(hours=hours_after, minutes=minutes_after, seconds=seconds_after)

        # 获取用户选择的操作类型
        is_reboot = reboot_var.get()

        # 启动定时关机或重启
        messagebox.showinfo("提示", f"系统将在 {target_time} 自动{'重启' if is_reboot else '关机'}。")

        # 启动一个线程来执行定时关机或重启
        shutdown_thread = Thread(target=schedule_shutdown, args=(target_time, is_reboot))
        shutdown_thread.start()

    except ValueError:
        messagebox.showerror("错误", "请输入有效的日期和时间!")

# 打开作者主页
def open_author_website():
    webbrowser.open("https://space.bilibili.com/3546654714104666?spm_id_from=333.1007.0.0")

def open_author_rj():
    webbrowser.open("https://space.bilibili.com/3546654714104666?spm_id_from=333.1007.0.0")

def ds():
    webbrowser.open("https://imgur.la/image/52833926112556c58c1e23f3a8c842d.Pn81U")

# 创建主窗口
root = tk.Tk()
root.title("定时关机程序")

# 设置窗口大小
root.geometry("500x500")

# 使用日期和时间的选项
use_datetime = tk.BooleanVar(value=True)
reboot_var = tk.BooleanVar(value=False)

# 标签
label = tk.Label(root, text="请选择定时关机的方式:")
label.pack(pady=10)

# 选择框:是否使用具体的日期和时间
frame_option = tk.Frame(root)
frame_option.pack(pady=5)

radio_datetime = tk.Radiobutton(frame_option, text="设置具体日期和时间", variable=use_datetime, value=True)
radio_datetime.pack(side="left", padx=5)
radio_after = tk.Radiobutton(frame_option, text="设置多久后自动关机", variable=use_datetime, value=False)
radio_after.pack(side="left", padx=5)

# 重启选项
frame_reboot = tk.Frame(root)
frame_reboot.pack(pady=5)
reboot_check = tk.Checkbutton(frame_reboot, text="选择重启", variable=reboot_var)
reboot_check.pack()

# 日期时间输入框部分
frame_datetime = tk.Frame(root)
frame_datetime.pack(pady=5)

label_year = tk.Label(frame_datetime, text="年:")
label_year.grid(row=0, column=0, padx=5)
entry_year = tk.Entry(frame_datetime, width=5)
entry_year.grid(row=0, column=1, padx=5)

label_month = tk.Label(frame_datetime, text="月:")
label_month.grid(row=0, column=2, padx=5)
entry_month = tk.Entry(frame_datetime, width=3)
entry_month.grid(row=0, column=3, padx=5)

label_day = tk.Label(frame_datetime, text="日:")
label_day.grid(row=0, column=4, padx=5)
entry_day = tk.Entry(frame_datetime, width=3)
entry_day.grid(row=0, column=5, padx=5)

label_hour = tk.Label(frame_datetime, text="时:")
label_hour.grid(row=1, column=0, padx=5)
entry_hour = tk.Entry(frame_datetime, width=3)
entry_hour.grid(row=1, column=1, padx=5)

label_minute = tk.Label(frame_datetime, text="分:")
label_minute.grid(row=1, column=2, padx=5)
entry_minute = tk.Entry(frame_datetime, width=3)
entry_minute.grid(row=1, column=3, padx=5)

label_second = tk.Label(frame_datetime, text="秒:")
label_second.grid(row=1, column=4, padx=5)
entry_second = tk.Entry(frame_datetime, width=3)
entry_second.grid(row=1, column=5, padx=5)

# 多久后关机输入框部分
frame_after = tk.Frame(root)
frame_after.pack(pady=5)

label_hours_after = tk.Label(frame_after, text="小时:")
label_hours_after.grid(row=0, column=0, padx=5)
entry_hours_after = tk.Entry(frame_after, width=5)
entry_hours_after.grid(row=0, column=1, padx=5)

label_minutes_after = tk.Label(frame_after, text="分钟:")
label_minutes_after.grid(row=0, column=2, padx=5)
entry_minutes_after = tk.Entry(frame_after, width=5)
entry_minutes_after.grid(row=0, column=3, padx=5)

label_seconds_after = tk.Label(frame_after, text="秒:")
label_seconds_after.grid(row=0, column=4, padx=5)
entry_seconds_after = tk.Entry(frame_after, width=5)
entry_seconds_after.grid(row=0, column=5)

# 启动定时关机按钮
button_start = tk.Button(root, text="开始定时关机", command=start_shutdown)
button_start.pack(pady=10)

# 取消关机按钮
button_cancel = tk.Button(root, text="取消关机", command=cancel_shutdown)
button_cancel.pack(pady=5)

# 关于按钮
button_about = tk.Button(root, text="关于", command=open_author_website)
button_about.pack(pady=5)

button_about = tk.Button(root, text="关于软件", command=open_author_rj)
button_about.pack(pady=5)

button_ds = tk.Button(root,text="打赏",command=ds)
button_ds.pack(pady=20)

# 更新输入框显示:根据选择是否设置具体时间或设置多久后关机
def update_inputs():
    if use_datetime.get():
        frame_datetime.pack(pady=5)
        frame_after.pack_forget()
    else:
        frame_after.pack(pady=5)
        frame_datetime.pack_forget()

use_datetime.trace_add("write", lambda *args: update_inputs())  # 监听 radio 按钮的变化

# 初始化显示
update_inputs()

# 运行窗口
root.mainloop()
'''python'''`



收藏

扫描二维码,在手机上阅读


    评论一下?

    OωO
    取消
      1. 头像
        jmI8jt2x
        第4楼
        NB
        回复
        1. 头像
          AI 助手
          谢谢您的支持和鼓励!😊 如果在使用定时关机软件时有任何问题或建议,欢迎随时留言。希望这款小工具能为您的日常使用带来便利!🌟
          回复
      1. 头像
        rpxj9v4j
        地板
        这阅读量...看来这网站人不少
        回复
      1. 头像
        OEQXwI9B
        板凳
        良心!!!有源码!!!😃😃😃
        回复
        1. 头像
          xiaohui
          @OEQXwI9B:感谢支持!!!
          回复
      1. 头像
        jmI8jt2x
        沙发
        竟然有源码!!!
        回复
        1. 头像
          xiaohui
          @jmI8jt2x:感谢支持!!!
          回复