欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python和Tkinter實現(xiàn)高考倒計時功能

 更新時間:2025年03月19日 11:43:49   作者:探客白澤  
隨著高考的臨近,每個考生都在緊鑼密鼓地復(fù)習(xí),這時候,一款實用的倒計時軟件能有效幫助你規(guī)劃剩余時間,提醒你不要浪費每一分每一秒,今天,我們來聊聊一款基于Python和Tkinter開發(fā)的高考倒計時軟件,功能簡單卻極具實用性,讓你在緊張的備考過程中不再迷失

一、軟件概述:

這款高考倒計時軟件的核心功能是展示距離高考的剩余天數(shù),以及設(shè)置多個復(fù)習(xí)目標(biāo)的倒計時。除了基本的倒計時功能,它還支持勵志語句顯示、目標(biāo)管理等功能,幫助你保持高效的復(fù)習(xí)節(jié)奏。

該軟件界面簡潔,操作簡單,且支持個性化設(shè)置。通過靈活的目標(biāo)管理,用戶可以設(shè)置多個關(guān)鍵時間點,并通過實時更新的倒計時幫助自己專注于每一個目標(biāo)。

二、功能亮點:

1. 高考倒計時

這是軟件的核心功能,能夠?qū)崟r顯示距離高考的剩余天數(shù)、小時和分鐘。每當(dāng)你看到倒計時的數(shù)字,都會提醒你珍惜剩下的每一秒鐘,不斷努力。

2. 添加目標(biāo)倒計時

除了高考這個主要目標(biāo)外,你還可以設(shè)置其他的學(xué)習(xí)目標(biāo),比如模擬考試時間、學(xué)科復(fù)習(xí)進(jìn)度等。每個目標(biāo)都可以設(shè)置日期、時間,軟件會自動倒計時,幫助你規(guī)劃每個階段的任務(wù)。

3. 勵志語句

每天在軟件界面下方,都會顯示一條勵志語句,幫助你在備考過程中保持積極的心態(tài)。這些語句隨機生成,既可以激勵你,也能緩解壓力。

4. 透明度調(diào)節(jié)與圓角設(shè)計

為了讓軟件界面更加美觀,我們?yōu)榇翱谠O(shè)計了圓角效果,同時支持透明度調(diào)節(jié)功能。你可以根據(jù)個人喜好調(diào)整窗口的透明度,既能讓軟件不占用太多桌面空間,又能確保時刻查看到倒計時。

5. 目標(biāo)管理

用戶可以通過右鍵菜單,方便地添加、刪除和修改目標(biāo)。當(dāng)某個目標(biāo)完成時,可以及時刪除或更改它,確保你的目標(biāo)始終是最新的。

6. 開機啟動與置頂功能

為方便使用,軟件支持設(shè)置為開機自動啟動,并且可以設(shè)置窗口始終置頂,確保你隨時可以看到剩余時間,不會錯過任何一個重要時刻。

7. 控制面板

控制面板是軟件的配置界面,用戶可以通過它來設(shè)置一些個性化的選項。例如:

  • 透明度控制:你可以調(diào)整軟件的透明度,以便在桌面上自由擺放。
  • 目標(biāo)管理:可以添加新目標(biāo)、修改現(xiàn)有目標(biāo)或刪除目標(biāo)。
  • 窗口置頂與開機啟動:軟件可以設(shè)置為窗口始終置頂,或者設(shè)置為開機時自動啟動。
  • 激勵語句切換:通過切換激勵語句,給自己帶來不一樣的動力。

三、運行效果:

四、技術(shù)實現(xiàn):

這款高考倒計時軟件基于Python和Tkinter開發(fā),以下是一些實現(xiàn)的技術(shù)細(xì)節(jié)。

1. 設(shè)置窗口透明度與圓角

使用 win32gui 庫,代碼如下:

import win32gui
import win32con
import win32api

def set_rounded_corners(self):
    """設(shè)置窗口圓角和透明度"""
    hwnd = self.root.winfo_id()
    style = win32gui.GetWindowLong(hwnd, win32con.GWL_STYLE)
    win32gui.SetWindowLong(hwnd, win32con.GWL_STYLE, style | win32con.WS_POPUP)
    win32gui.SetWindowLong(hwnd, win32con.GWL_EXSTYLE, win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE) | win32con.WS_EX_LAYERED)
    self._region = win32gui.CreateRoundRectRgn(0, 0, self.root.winfo_width() + 1, self.root.winfo_height() + 1, 40, 40)
    win32gui.SetWindowRgn(hwnd, self._region, True)
    win32gui.SetLayeredWindowAttributes(hwnd, 0, int(0.8 * 255), win32con.LWA_ALPHA)
  • 倒計時功能實現(xiàn) 倒計時的核心邏輯是計算當(dāng)前時間與目標(biāo)時間的差值,通過 datetime 庫來實時更新剩余時間。
  import datetime

def update_countdown(self):
    now = datetime.datetime.now()
    target = self.config['targets'][self.current_target_index]
    time_str = target.get('time', '00:00')
    target_datetime = datetime.datetime.strptime(f"{target['date']} {time_str}", '%Y-%m-%d %H:%M')
    delta = target_datetime - now
    self.days_label.config(text=str(delta.days) + " 天")
    self.countdown_label.config(text=f"{delta.hours}小時{delta.minutes}分鐘")
    self.date_label.config(text=f"{target['date']} {time_str}")

這段代碼會計算從當(dāng)前時間到目標(biāo)時間的時間差,并更新界面上的倒計時顯示。

  • 激勵語句 為了讓備考過程不枯燥,我們使用API隨機獲取勵志語句,并在軟件界面下方展示。
def get_motto(self):
    try:
        response = requests.get('https://jkapi.com/api/one_yan?type=json', timeout=5)
        if response.status_code == 200:
            data = response.json()
            return data.get('content', random.choice(self.default_mottos))
    except:
        pass
    return random.choice(self.default_mottos)

通過這段代碼,我們確保每天都能看到新的激勵語句,給自己帶來新的動力。

五、總結(jié) :

這款高考倒計時軟件不僅幫助你清晰地管理剩余時間,還通過多種人性化的功能幫助你保持積極心態(tài),迎接高考的挑戰(zhàn)。通過透明度調(diào)節(jié)、目標(biāo)管理、勵志語句等功能,讓你在高考備考過程中始終保持動力,不輕言放棄。 希望這款軟件能夠成為你備考路上的得力助手,祝你在高考中取得好成績,邁向更加輝煌的未來!

六、相關(guān)源碼:

import tkinter as tk
from tkinter import ttk
import datetime
import json
import os
import sys
import random
import requests
from tkinter import messagebox

class CountdownTimer:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("高考倒計時軟件")
        self.root.attributes('-alpha', 0.8)  # 設(shè)置初始透明度
        self.root.overrideredirect(True)  # 無邊框窗口
        # 設(shè)置窗口大小
        self.root.geometry('300x240')
        # 設(shè)置窗口背景為白色
        self.root.configure(bg='white')
        # 設(shè)置窗口透明度
        self.root.attributes('-alpha', 0.8)

        # 設(shè)置圓角窗口
        self.set_rounded_corners()

    def set_rounded_corners(self):
        """設(shè)置窗口圓角"""
        import win32gui
        import win32con
        import win32api

        # 等待窗口完全加載
        self.root.update_idletasks()

        # 獲取窗口句柄
        hwnd = self.root.winfo_id()

        # 獲取窗口當(dāng)前樣式
        style = win32gui.GetWindowLong(hwnd, win32con.GWL_STYLE)

        # 設(shè)置窗口樣式
        win32gui.SetWindowLong(
            hwnd, 
            win32con.GWL_STYLE,  
            style | win32con.WS_POPUP
        )

        # 設(shè)置窗口為圓角并啟用分層窗口
        win32gui.SetWindowLong(
            hwnd,
            win32con.GWL_EXSTYLE,
            win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE) | win32con.WS_EX_LAYERED
        )

        # 設(shè)置窗口為圓角
        self._region = win32gui.CreateRoundRectRgn(
            0, 0,
            self.root.winfo_width() + 1, 
            self.root.winfo_height() + 1,
            40, 40  # 圓角的寬度和高度
        )
        win32gui.SetWindowRgn(hwnd, self._region, True)

        # 設(shè)置窗口透明色鍵,使圓角外區(qū)域完全透明
        win32gui.SetLayeredWindowAttributes(hwnd, 0, int(0.8 * 255), win32con.LWA_ALPHA)

        # 保存窗口位置用的變量
        self.x = 0
        self.y = 0

        # 加載配置
        self.config = self.load_config()

        # 當(dāng)前顯示的目標(biāo)索引
        self.current_target_index = 0

        # 主框架
        self.main_frame = tk.Frame(self.root, bg='white')
        self.main_frame.pack(padx=10, pady=5)

        # 標(biāo)題顯示(第一行)
        self.title_label = tk.Label(
            self.main_frame,
            text="",  # 將在update_countdown中設(shè)置
            font=("微軟雅黑", 14),
            fg='#4169E1',
            bg='white'
        )
        self.title_label.pack()

        # 剩余天數(shù)顯示(第二行)
        self.days_label = tk.Label(
            self.main_frame,
            text="",
            font=("微軟雅黑", 30, "bold"),
            fg='#FF4500',
            bg='white'
        )
        self.days_label.pack()

        # 倒計時顯示(第三行)
        self.countdown_label = tk.Label(
            self.main_frame,
            text="",
            font=("微軟雅黑", 16, ),
            fg='#758796',
            bg='white'
        )
        self.countdown_label.pack()

        # 日期顯示(第四行)
        self.date_label = tk.Label(
            self.main_frame,
            text="",
            font=("微軟雅黑", 12),
            fg='#696969',
            bg='white'
        )
        self.date_label.pack()

        # 默認(rèn)激勵語句列表
        self.default_mottos = [
            "不明白你們遇到好事,為什么要掐腿揉眼睛,真醒了怎么辦?",
            "天道酬勤,未來可期。",
            "一分耕耘,一分收獲。",
            "堅持就是勝利。",
            "相信自己,你就是最好的。",
            "付出終有回報,努力不會白費。"
        ]

        # 當(dāng)前使用的激勵語句
        self.current_motto = self.get_motto()

        # 激勵文字
        self.motto_label = tk.Label(
            self.main_frame,
            text=self.current_motto,
            font=("微軟雅黑", 10),
            fg='#77C5E6',
            bg='white',
            wraplength=260,  # 設(shè)置較小的換行寬度以確保兩行顯示
            height=3  # 設(shè)置固定高度為2行
        )
        self.motto_label.pack()
        # 添加切換按鈕框架
        self.button_frame = tk.Frame(self.main_frame, bg='white')
        self.button_frame.pack(pady=5)

        # 添加目標(biāo)指示器框架
        self.dots_frame = tk.Frame(self.button_frame, bg='white')
        self.dots_frame.pack()

        # 存儲圓點標(biāo)簽的列表
        self.dot_labels = []

        # 控制面板
        self.control_window = None

        # 綁定鼠標(biāo)事件
        self.root.bind('<Button-1>', self.save_last_click)
        self.root.bind('<B1-Motion>', self.drag_window)
        self.root.bind('<Button-3>', self.show_control_panel)

        # 開始倒計時
        self.update_countdown()

    # 修復(fù)所有方法的縮進(jìn),確保它們都是 CountdownTimer 類的直接方法
    def load_config(self):
        default_config = {
            'transparency': 0.8,
            'targets': [
                {
                    'name': '高考',
                    'date': '2025-06-07'
                }
            ],
            'position': [100, 100],
            'topmost': False,
            'auto_start': False
        }

        try:
            if os.path.exists('gaokao_config.json'):
                with open('gaokao_config.json', 'r', encoding='utf-8') as f:
                    config = json.load(f)
                    if not all(key in config for key in default_config.keys()):
                        return default_config
                    return config
            return default_config
        except:
            return default_config

    def save_config(self):
        with open('gaokao_config.json', 'w', encoding='utf-8') as f:
            json.dump(self.config, f, ensure_ascii=False, indent=2)

    def save_last_click(self, event):
        self.x = event.x
        self.y = event.y

    def drag_window(self, event):
        new_x = self.root.winfo_x() + (event.x - self.x)
        new_y = self.root.winfo_y() + (event.y - self.y)
        self.root.geometry(f"+{new_x}+{new_y}")
        self.config['position'] = [new_x, new_y]
        self.save_config()

    def show_control_panel(self, event):
        if self.control_window is None or not tk.Toplevel.winfo_exists(self.control_window):
            self.control_window = tk.Toplevel(self.root)
            self.control_window.title("設(shè)置")
            self.control_window.geometry('300x520')
            self.control_window.resizable(False, False)

            # 創(chuàng)建主框架并添加內(nèi)邊距
            main_frame = tk.Frame(self.control_window, padx=20, pady=10)
            main_frame.pack(fill='both', expand=True)

            # 透明度控制區(qū)域
            transparency_frame = tk.LabelFrame(main_frame, text="透明度設(shè)置", padx=10, pady=5)
            transparency_frame.pack(fill='x', pady=(0, 10))

            transparency = ttk.Scale(
                transparency_frame,
                from_=0.1,
                to=1.0,
                value=self.config['transparency'],
                command=self.update_transparency
            )
            transparency.pack(fill='x', pady=5)

            # 目標(biāo)管理區(qū)域
            targets_frame = tk.LabelFrame(main_frame, text="倒計時目標(biāo)管理", padx=10, pady=5)
            targets_frame.pack(fill='both', expand=True)

            # 目標(biāo)列表框架
            self.target_frame = tk.Frame(targets_frame)
            self.target_frame.pack(fill='both', expand=True, pady=5)

            # 添加目標(biāo)按鈕
            add_button = tk.Button(
                targets_frame,
                text="添加新目標(biāo)",
                command=self.add_target,
                width=15
            )
            add_button.pack(pady=10)

            # 添加窗口置頂和開機啟動選項
            options_frame = tk.LabelFrame(main_frame, text="其他設(shè)置", padx=10, pady=5)
            options_frame.pack(fill='x', pady=(0, 10))

            # 窗口置頂選項
            self.topmost_var = tk.BooleanVar(value=self.config.get('topmost', False))
            topmost_check = tk.Checkbutton(
                options_frame,
                text="窗口置頂",
                variable=self.topmost_var,
                command=self.toggle_topmost
            )
            topmost_check.pack(anchor='w')

            # 開機啟動選項
            self.auto_start_var = tk.BooleanVar(value=self.config.get('auto_start', False))
            auto_start_check = tk.Checkbutton(
                options_frame,
                text="開機啟動",
                variable=self.auto_start_var,
                command=self.toggle_auto_start
            )
            auto_start_check.pack(anchor='w')
            # 添加切換激勵語句和關(guān)閉程序按鈕的框架
            buttons_frame = tk.Frame(main_frame)
            buttons_frame.pack(fill='x', pady=10)

            # 添加切換激勵語句按鈕(靠左)
            change_motto_button = tk.Button(
                buttons_frame,
                text="切換激勵語句",
                command=self.change_motto,
                width=15
            )
            change_motto_button.pack(side='left', padx=5)

            # 添加關(guān)閉程序按鈕(靠右)
            close_button = tk.Button(
                buttons_frame,
                text="關(guān)閉程序",
                command=self.confirm_exit,
                fg='red',
                width=15
            )
            close_button.pack(side='right', padx=5)

            self.update_target_list()
    def update_transparency(self, value):
        transparency = float(value)
        self.root.attributes('-alpha', transparency)
        self.config['transparency'] = transparency
        self.save_config()

    def add_target(self):
        # 檢查目標(biāo)數(shù)量是否已達(dá)到上限
        if len(self.config['targets']) >= 5:
            tk.messagebox.showwarning("提示", "最多只能添加5個倒計時目標(biāo)")
            return

        dialog = tk.Toplevel(self.control_window)
        dialog.title("添加目標(biāo)")
        dialog.geometry('300x250')
        dialog.resizable(False, False)

        # 創(chuàng)建主框架
        main_frame = tk.Frame(dialog, padx=20, pady=10)
        main_frame.pack(fill='both', expand=True)

        # 名稱輸入?yún)^(qū)域
        name_frame = tk.Frame(main_frame)
        name_frame.pack(fill='x', pady=(0, 10))
        tk.Label(name_frame, text="目標(biāo)名稱:", width=10, anchor='w').pack(side='left')
        name_entry = tk.Entry(name_frame)
        name_entry.pack(side='left', fill='x', expand=True)

        # 日期輸入?yún)^(qū)域
        date_frame = tk.Frame(main_frame)
        date_frame.pack(fill='x', pady=(0, 10))
        tk.Label(date_frame, text="目標(biāo)日期:", width=10, anchor='w').pack(side='left')

        # 年份輸入
        year_var = tk.StringVar(value=str(datetime.datetime.now().year))
        year_spinbox = ttk.Spinbox(date_frame, from_=2024, to=2100, width=5, textvariable=year_var)
        year_spinbox.pack(side='left')
        tk.Label(date_frame, text="年").pack(side='left', padx=2)

        # 月份輸入
        month_var = tk.StringVar(value='01')
        month_spinbox = ttk.Spinbox(date_frame, from_=1, to=12, width=3, textvariable=month_var, format='%02.0f')
        month_spinbox.pack(side='left')
        tk.Label(date_frame, text="月").pack(side='left', padx=2)

        # 日期輸入
        day_var = tk.StringVar(value='01')
        day_spinbox = ttk.Spinbox(date_frame, from_=1, to=31, width=3, textvariable=day_var, format='%02.0f')
        day_spinbox.pack(side='left')
        tk.Label(date_frame, text="日").pack(side='left', padx=2)

        # 時間輸入?yún)^(qū)域
        time_frame = tk.Frame(main_frame)
        time_frame.pack(fill='x', pady=(0, 20))
        tk.Label(time_frame, text="目標(biāo)時間:", width=10, anchor='w').pack(side='left')

        # 小時輸入
        hour_var = tk.StringVar(value='00')
        hour_spinbox = ttk.Spinbox(time_frame, from_=0, to=23, width=3, textvariable=hour_var, format='%02.0f')
        hour_spinbox.pack(side='left')
        tk.Label(time_frame, text=":").pack(side='left', padx=2)

        # 分鐘輸入
        minute_var = tk.StringVar(value='00')
        minute_spinbox = ttk.Spinbox(time_frame, from_=0, to=59, width=3, textvariable=minute_var, format='%02.0f')
        minute_spinbox.pack(side='left')

        # 按鈕區(qū)域
        button_frame = tk.Frame(main_frame)
        button_frame.pack(side='bottom', pady=(0, 10))

        def save():
            name = name_entry.get().strip()
            year = year_var.get().zfill(4)
            month = month_var.get().zfill(2)
            day = day_var.get().zfill(2)
            hour = hour_var.get().zfill(2)
            minute = minute_var.get().zfill(2)

            if not name:
                tk.messagebox.showwarning("提示", "請輸入目標(biāo)名稱")
                return

            date = f"{year}-{month}-{day}"

            try:
                datetime.datetime.strptime(f"{date} {hour}:{minute}", '%Y-%m-%d %H:%M')
                self.config['targets'].append({
                    'name': name,
                    'date': date,
                    'time': f"{hour}:{minute}"
                })
                self.save_config()
                self.update_target_list()
                dialog.destroy()
            except ValueError:
                tk.messagebox.showerror("錯誤", "日期無效,請檢查輸入")

        # 取消按鈕
        tk.Button(button_frame, text="取消", width=10, command=dialog.destroy).pack(side='left', padx=5)
        # 保存按鈕
        tk.Button(button_frame, text="保存", width=10, command=save).pack(side='left', padx=5)

    def update_target_list(self):
        for widget in self.target_frame.winfo_children():
            widget.destroy()

        for i, target in enumerate(self.config['targets']):
            frame = tk.Frame(self.target_frame)
            frame.pack(fill='x', pady=2)

            time_str = target.get('time', '00:00')
            tk.Label(
                frame,
                text=f"{target['name']}: {target['date']} {time_str}",
                anchor='w'
            ).pack(side='left', fill='x', expand=True)

            tk.Button(
                frame,
                text="刪除",
                command=lambda idx=i: self.delete_target(idx),
                width=6
            ).pack(side='right')

    def confirm_exit(self):
        if tk.messagebox.askokcancel("確認(rèn)", "確定要關(guān)閉程序嗎?"):
            self.root.quit()
            self.root.destroy()

    def delete_target(self, index):
        self.config['targets'].pop(index)
        # 如果刪除的是當(dāng)前顯示的目標(biāo),調(diào)整當(dāng)前索引
        if index == self.current_target_index:
            self.current_target_index = 0
        elif index < self.current_target_index:
            self.current_target_index -= 1

        self.save_config()
        self.update_target_list()
        self.update_countdown()

    def get_motto(self):
        """獲取激勵語句,優(yōu)先從API獲取,失敗則使用默認(rèn)語句"""
        try:
            response = requests.get('https://jkapi.com/api/one_yan?type=json', timeout=5)
            if response.status_code == 200:
                data = response.json()
                return data.get('content', random.choice(self.default_mottos))
        except:
            pass
        return random.choice(self.default_mottos)

    def update_countdown(self):
        now = datetime.datetime.now()

        # 不再每次更新激勵語句
        # self.motto_label.config(text=self.get_motto())

        # 檢查是否有目標(biāo)
        if not self.config['targets']:
            self.title_label.config(text="沒有設(shè)置倒計時目標(biāo)")
            self.days_label.config(text="請右鍵添加目標(biāo)")
            self.countdown_label.config(text="")
            self.date_label.config(text="")
            self.update_count_label()
            self.root.after(1000, self.update_countdown)
            return

        # 確保當(dāng)前索引在有效范圍內(nèi)
        if self.current_target_index >= len(self.config['targets']):
            self.current_target_index = 0

        # 只顯示當(dāng)前選中的目標(biāo)
        target = self.config['targets'][self.current_target_index]
        time_str = target.get('time', '00:00')
        target_datetime = datetime.datetime.strptime(f"{target['date']} {time_str}", '%Y-%m-%d %H:%M')
        delta = target_datetime - now

        # 獲取年份
        year = target_datetime.year

        # 更新標(biāo)題(第一行)- 距離2025年"項目標(biāo)題"還有:
        self.title_label.config(text=f"距離{year}年{target['name']}")

        # 處理目標(biāo)日期已過的情況
        if delta.days < 0:
            # 第二行 - 顯示剩余天數(shù)
            self.days_label.config(text="0天(已結(jié)束)")
            # 第三行 - 顯示倒計時
            self.countdown_label.config(text="0小時0分0秒")
        else:
            days = delta.days
            hours = delta.seconds // 3600
            minutes = (delta.seconds % 3600) // 60
            seconds = delta.seconds % 60

            # 第二行 - 顯示剩余天數(shù)
            self.days_label.config(text=f"{days}天")
            # 第三行 - 顯示倒計時
            self.countdown_label.config(text=f"{hours}小時{minutes}分{seconds}秒")

        # 第四行 - 顯示倒計時日期
        formatted_date = target_datetime.strftime("%Y年%m月%d日")
        self.date_label.config(text=formatted_date)

        self.update_count_label()
        self.root.after(1000, self.update_countdown)
    def update_count_label(self):
        """更新目標(biāo)指示器顯示"""
        total = len(self.config['targets'])

        # 清除現(xiàn)有的圓點
        for dot in self.dot_labels:
            dot.destroy()
        self.dot_labels.clear()

        # 如果只有一個目標(biāo)或沒有目標(biāo),不顯示圓點
        if total <= 1:
            return

        # 為每個目標(biāo)創(chuàng)建一個圓點
        for i in range(total):
            dot = tk.Label(
                self.dots_frame,
                text="●",
                font=("微軟雅黑", 8),
                fg='#D3D3D3' if i != self.current_target_index else '#4169E1',
                bg='white',
                cursor='hand2'  # 添加手型光標(biāo)
            )
            dot.pack(side='left', padx=2)
            # 綁定點擊事件
            dot.bind('<Button-1>', lambda e, idx=i: self.switch_to_target(idx))
            self.dot_labels.append(dot)
    def switch_to_target(self, index):
        """切換到指定目標(biāo)"""
        if self.config['targets']:
            self.current_target_index = index
            self.update_countdown()
    def toggle_topmost(self):
        """切換窗口置頂狀態(tài)"""
        is_topmost = self.topmost_var.get()
        self.root.attributes('-topmost', is_topmost)
        self.config['topmost'] = is_topmost
        self.save_config()

    def change_motto(self):
        """切換激勵語句"""
        new_motto = self.get_motto()
        self.current_motto = new_motto
        self.motto_label.config(text=new_motto)

    def toggle_auto_start(self):
        """切換開機啟動狀態(tài)"""
        import winreg
        key_path = r'Software\\Microsoft\\Windows\\CurrentVersion\\Run'
        app_path = os.path.abspath(sys.argv[0])

        try:
            key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path, 0, winreg.KEY_ALL_ACCESS)
            if self.auto_start_var.get():
                winreg.SetValueEx(key, 'GaokaoCountdown', 0, winreg.REG_SZ, app_path)
            else:
                try:
                    winreg.DeleteValue(key, 'GaokaoCountdown')
                except WindowsError:
                    pass
            winreg.CloseKey(key)
            self.config['auto_start'] = self.auto_start_var.get()
            self.save_config()
        except Exception as e:
            messagebox.showerror("錯誤", f"設(shè)置開機啟動失?。簕str(e)}")
            self.auto_start_var.set(not self.auto_start_var.get())

    def run(self):
        # 設(shè)置初始位置
        if 'position' in self.config:
            self.root.geometry(f"+{self.config['position'][0]}+{self.config['position'][1]}")

        # 設(shè)置初始透明度
        self.root.attributes('-alpha', self.config['transparency'])

        # 設(shè)置窗口置頂狀態(tài)
        if self.config.get('topmost', False):
            self.root.attributes('-topmost', True)

        self.root.mainloop()

if __name__ == "__main__":
    app = CountdownTimer()
    app.run()

到此這篇關(guān)于基于Python和Tkinter實現(xiàn)高考倒計時功能的文章就介紹到這了,更多相關(guān)Python Tkinter高考倒計時內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中函數(shù)相關(guān)的變量作用域

    Python中函數(shù)相關(guān)的變量作用域

    這篇文章主要介紹了Python中函數(shù)相關(guān)的變量作用域,變量的作用域是指程序代碼能夠訪問該變量的區(qū)域,如果超出該區(qū)域,在訪問時就會出現(xiàn)錯誤,需要的朋友可以參考下
    2023-08-08
  • 使用python獲取cpu每秒的使用率

    使用python獲取cpu每秒的使用率

    這篇文章主要介紹了使用python獲取cpu每秒的使用率,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 使用Python和NLTK進(jìn)行文本預(yù)處理示例詳解

    使用Python和NLTK進(jìn)行文本預(yù)處理示例詳解

    文將介紹如何使用Python編程語言和NLTK(Natural Language Toolkit)庫進(jìn)行文本預(yù)處理,為后續(xù)的文本分析和機器學(xué)習(xí)任務(wù)做準(zhǔn)備,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-03-03
  • 關(guān)于pycharm找不到MySQLdb模塊的解決方法

    關(guān)于pycharm找不到MySQLdb模塊的解決方法

    MySQLdb是用于Python鏈接Mysql數(shù)據(jù)庫的接口,它實現(xiàn)了Python數(shù)據(jù)庫API規(guī)范V2.0,基于MySql C API上建立的,本文給大家介紹pycharm找不到MySQLdb模塊解決方法,需要的朋友參考下吧
    2021-06-06
  • PyCharm設(shè)置中文(漢化與解除漢化)的方法

    PyCharm設(shè)置中文(漢化與解除漢化)的方法

    這篇文章介紹了PyCharm設(shè)置中文(漢化與解除漢化)的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python中條件選擇和循環(huán)語句使用方法介紹

    Python中條件選擇和循環(huán)語句使用方法介紹

    Python中也存在條件選擇和循環(huán)語句,其風(fēng)格和C語言、java的很類似,不過在書寫語法上還是存在一些區(qū)別的,接下來同大家一起了解下,希望可以幫助你更好的學(xué)習(xí)python,感興趣的你可不要錯過了哈
    2013-03-03
  • python實現(xiàn)文本文件合并

    python實現(xiàn)文本文件合并

    本文給大家匯總介紹了3種合并文本文件的方法,程序的實現(xiàn)思路都非常不錯,這里推薦給大家,有需要的小伙伴可以參考下。
    2015-12-12
  • python 發(fā)送郵件的四種方法匯總

    python 發(fā)送郵件的四種方法匯總

    這篇文章主要介紹了python 發(fā)送郵件的四種方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python使用keras和tensorflow遇到的問題及解決

    Python使用keras和tensorflow遇到的問題及解決

    這篇文章主要介紹了Python使用keras和tensorflow遇到的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • python3 cmp實現(xiàn)方式

    python3 cmp實現(xiàn)方式

    這篇文章主要介紹了python3 cmp實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評論