作品简介

每日随机小挑战工具 是一款使用腾讯云AI代码助手生成的、旨在提高用户每天挑战自我的工具。很多时候,我们都需要一些日常的小挑战来提高自己的工作效率、思维能力或者健康水平,基于这一需求,通过这款每日随机小挑战工具,它通过自动生成每日小挑战,帮助用户轻松应对每一天的挑战,让生活充满随机性,增加生活的趣味性与动力。

技术架构

使用 Python 编程语言,结合 Tkinter 库设计图形用户界面,整个程序逻辑包括:从挑战题库中随机抽取题目、生成用户自定义的小挑战内容。

实现过程

  1. 创建界面
    设计一个简洁明了的界面,包含:

    • 按钮用于开始生成每日挑战
    • 显示框展示生成的挑战内容
  2. 随机生成挑战小项目

  3. 设置界面细节,优化

开发环境与开发工具

  • 系统:Windows 11
  • 开发工具:VSCode
  • 编程语言:Python
  • 插件:安装腾讯云AI代码助手插件辅助开发

关键技术解析

  1. 随机数生成:使用 Python 中的 random 模块生成随机数,确保每次抽取的挑战题目都不重复。

  2. 图形界面设计:通过 Tk 库设计直观、简洁的用户界面。

使用说明

  1. 点击“生成每日挑战:点击“生成每日挑战”按钮,程序会从题库中随机抽取挑战并显示在界面中。

  2. 每天定时获取挑战:可以在程序中设置定时器,每天自动生成一个新挑战,或者用户可以手动触发挑战生成。

效果展示

定时开启

项目源码

import tkinter as tk
from tkinter import messagebox
import random
import schedule
import time
from threading import Thread
from datetime import datetime


# 手动创建每日挑战列表
daily_challenges = [
   "今天学习Python中的装饰器。",

    "完成至少45分钟的有氧运动。",

    "阅读一篇关于人工智能的技术博客。",

    "尝试解决一个中等难度的算法题。",

    "学习JavaScript中的异步编程。",

    "完成一次户外徒步活动。",

    "阅读一本关于设计模式的书籍。",

    "尝试编写一个简单的游戏。",

    "学习C++中的模板编程。",

    "完成30分钟的瑜伽练习。",

    "阅读一篇关于云计算的文章。",

    "尝试解决一个数据库优化的难题。",

    "学习Ruby中的元编程。",

    "完成一次摄影挑战。",

    "阅读一篇关于机器学习的论文。",

    "尝试构建一个个人网站。",

    "学习Go语言的基础。",

    "完成一次游泳锻炼。",

    "阅读一篇关于区块链的技术文章。",

    "尝试解决一个网络安全相关的问题。",

    "学习Swift中的协议和委托。",

    "完成一次骑行活动。",

    "阅读一本关于数据结构的书籍。",

    "尝试实现一个排序算法。",

    "学习Kotlin中的协程。",

    "完成一次绘画创作。",

    "阅读一篇关于物联网的文章。",

    "尝试解决一个操作系统相关的问题。",

    "学习Rust语言的基础。",

    "完成一次音乐欣赏。",

    "阅读一篇关于量子计算的技术博客。",

    "尝试构建一个简单的移动应用。",

    "学习Scala中的函数式编程。",

    "完成一次烹饪新菜品的尝试。",

    "阅读一篇关于生物技术的文章。",

    "尝试解决一个图形学相关的问题。",

    "学习Haskell中的惰性求值。",

    "完成一次登山活动。",

    "阅读一篇关于天文学的技术文章。",

    "尝试实现一个网络爬虫。",

    "学习Lua中的模块系统。",

    "完成一次志愿者服务。",

    "阅读一篇关于地理信息系统的文章。",

    "尝试解决一个分布式系统相关的问题。",

    "学习Perl中的正则表达式。",

    "完成一次陶艺制作。",

    "阅读一篇关于考古学的技术博客。",

    "尝试构建一个简单的聊天应用。",

    "学习MATLAB中的数据分析。",

    "完成一次书法练习。",

    "尝试学习一种新的乐器的基础知识。",

    "完成一次室内园艺活动,比如种植多肉植物。",

    "阅读一篇关于航空航天技术发展的文章。",

    "尝试进行一次短距离的帆船体验。",

    "学习CSS中的Flexbox布局。",

    "完成一次冥想练习。",

    "阅读一本关于历史文化名城的书籍。"

]

# 全局变量用于记录上次选择挑战的日期和打乱后的挑战列表
shuffled_challenges = daily_challenges.copy()
random.shuffle(shuffled_challenges)
last_challenge_date = None


def get_today_challenge():
    global last_challenge_date, shuffled_challenges
    today = datetime.now().date()

    if last_challenge_date!= today or not shuffled_challenges:
        last_challenge_date = today
        shuffled_challenges = daily_challenges.copy()
        random.shuffle(shuffled_challenges)

    challenge = shuffled_challenges.pop(0)
    return challenge


def generate_challenge():
    challenge = get_today_challenge()
    challenge_text.delete(1.0, tk.END)
    challenge_text.insert(tk.END, challenge)


def scheduled_challenge_generation():
    schedule.every().day.at("08:00").do(generate_challenge)
    while True:
        schedule.run_pending()
        time.sleep(1)


# 创建并启动定时任务线程
scheduler_thread = Thread(target=scheduled_challenge_generation, daemon=True)
scheduler_thread.start()


def start_scheduled_generation():
    messagebox.showinfo("定时任务", "定时自动生成挑战功能已开启,每天早上8点会自动生成挑战。")


# 创建主窗口
root = tk.Tk()
root.title("每日挑战生成器")
root.geometry("600x400")
root.resizable(False, False)

# 设置窗口背景颜色
root.configure(bg='#f0f8ff')

# 创建一个框架来更好地布局内容
frame = tk.Frame(root, bg='#f0f8ff')
frame.pack(padx=20, pady=20)

# 创建文本框展示挑战
challenge_text = tk.Text(frame, height=15, width=80, bg='#ffffff', relief='flat', borderwidth=1)
challenge_text.grid(row=0, column=0, columnspan=2, pady=(0, 20))

# 创建按钮生成每日挑战
generate_button = tk.Button(frame, text="生成每日挑战", command=generate_challenge, bg='#4CAF50', fg='white',
                            activebackground='#45a049', font=('Arial', 12))
generate_button.grid(row=1, column=0, padx=(0, 10), pady=10)

# 创建按钮开启定时自动生成挑战
scheduled_button = tk.Button(frame, text="开启定时自动生成", command=start_scheduled_generation,
                              bg='#008CBA', fg='white', activebackground='#007bb5', font=('Arial', 12))
scheduled_button.grid(row=1, column=1, pady=10)


# 运行主循环
root.mainloop()

注意:

要想生活变有趣,赶快开启每日随机挑战吧,就是随机抽取,同时要按要求完成每日的挑战哦!!!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐