代码行数计数器

news2024/11/16 9:45:54

做了个记录代码函数的小程序,后缀名记得设置为.pyw,如果你装了python的话可以直接拿来用,免费自取。
功能说明:
1.记录总行数、当前行数、目标行数三个值

2.具有进度条功能

3.行数的多少能激发不同的反馈,如great,good等

4.具有段位系统,参考游戏段位设计

文件目录:

两个文件一个是源代码,一个txt文件保存代码总行数

源代码如下:

import os
import tkinter as tk
from tkinter import ttk, messagebox

# 定义目标行数
TARGET_LINES = 1000000

# 记录文件路径
record_file = "line_count_record.txt"

# 层次名称和颜色映射
tier_names = ["青铜", "白银", "黄金", "铂金", "钻石", "星耀", "王者", "最强王者", "荣耀王者", "归一"]
tier_colors = ["#CD7F32", "#C0C0C0", "#FFD700", "#38B0DE", "#CC3299", "#FF7F00", "#BC1717", "#FF7F00", "#FF2400", "#000000"]

def read_record():
    """读取记录文件中的行数信息"""
    if os.path.exists(record_file):
        with open(record_file, "r", encoding="utf-8") as f:
            data = f.readlines()
            if len(data) > 0:
                total_lines = int(data[0].strip())
                return total_lines
    return 0

def write_record(total_lines):
    """将行数信息写入记录文件"""
    with open(record_file, "w", encoding="utf-8") as f:
        f.write(f"{total_lines}\n")

def update_progress_bar():
    """更新进度条和百分比标签"""
    progress = (total_lines / TARGET_LINES) * 100
    progress_var.set(progress)
    label_percentage.config(text=f"{progress:.2f}%")

def get_tier_and_rank(total_lines):
    """根据总行数计算层次和等级"""
    tier_index = total_lines // 100000  # 每个层次代表10万行代码
    rank = (total_lines % 100000) // 10000 + 1  # 每个层次分10阶,每1万行表示1阶
    if tier_index >= len(tier_names):
        tier_index = len(tier_names) - 1  # 限制最大层次
        rank = 10  # 限制最大等级为10阶
    return tier_index, rank

def show_feedback(new_current_lines):
    """根据输入的行数显示反馈消息"""
    if new_current_lines > 1000:
        label_feedback.config(text="oh my god!", fg="red")
    elif new_current_lines > 500:
        label_feedback.config(text="unbelievable!", fg="purple")
    elif new_current_lines > 300:
        label_feedback.config(text="wonderful!", fg="gold")
    elif new_current_lines > 200:
        label_feedback.config(text="amazing!", fg="silver")
    elif new_current_lines > 100:
        label_feedback.config(text="very good!", fg="cyan")
    elif new_current_lines > 50:
        label_feedback.config(text="great!", fg="black")
    else:
        label_feedback.config(text="Keep going!", fg="black")

def on_submit(event=None):
    """提交按钮的回调函数,更新当前行数并保存"""
    global total_lines
    try:
        new_current_lines = int(entry_current_lines.get())
        total_lines += new_current_lines  # 直接加上当前行数
        write_record(total_lines)
        label_total_lines.config(text=f"累计总行数: {total_lines}")
        update_progress_bar()  # 更新进度条
        show_feedback(new_current_lines)  # 显示反馈信息

        tier_index, rank = get_tier_and_rank(total_lines)
        label_tier.config(text=f"当前层次: {tier_names[tier_index]} {rank}阶", fg=tier_colors[tier_index])

        messagebox.showinfo("保存成功", "当前行数已更新并保存。")
    except ValueError:
        messagebox.showerror("输入错误", "请输入有效的整数行数。")

# 读取之前的记录
total_lines = read_record()

# 创建图形化界面
root = tk.Tk()
root.title("代码行数记录器")

# 设置窗口宽度和位置
window_width = 400  # 宽度设为400像素
window_height = 300  # 高度设为300像素

# 获取屏幕宽度和高度
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

# 计算窗口位置,使其位于右上角
x_position = screen_width - window_width
y_position = 0

# 设置窗口的大小和位置
root.geometry(f"{window_width}x{window_height}+{x_position}+{y_position}")

# 显示目标行数
label_target = tk.Label(root, text=f"目标行数: {TARGET_LINES}")
label_target.pack()

# 显示累计总行数
label_total_lines = tk.Label(root, text=f"累计总行数: {total_lines}")
label_total_lines.pack()

# 当前行数输入框
label_current = tk.Label(root, text="输入当前增加的行数:")
label_current.pack()

entry_current_lines = tk.Entry(root)
entry_current_lines.pack()

# 绑定回车键到提交函数
entry_current_lines.bind("<Return>", on_submit)

# 提交按钮
btn_submit = tk.Button(root, text="提交", command=on_submit)
btn_submit.pack()

# 进度条
progress_var = tk.DoubleVar()
progress_bar = ttk.Progressbar(root, variable=progress_var, maximum=100)
progress_bar.pack(fill=tk.X, padx=10, pady=10)

# 百分比显示标签
label_percentage = tk.Label(root, text="0.00%")
label_percentage.pack()

# 反馈信息标签
label_feedback = tk.Label(root, text="", font=("Arial", 14))
label_feedback.pack()

# 当前层次和等级标签
tier_index, rank = get_tier_and_rank(total_lines)
label_tier = tk.Label(root, text=f"当前层次: {tier_names[tier_index]} {rank}阶", fg=tier_colors[tier_index], font=("Arial", 14))
label_tier.pack()

# 初始化进度条
update_progress_bar()

# 运行图形化界面
root.mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2066893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于分数Talbot效应的阵列光学涡旋产生matlab模拟与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于分数Talbot效应的阵列光学涡旋产生matlab模拟与仿真&#xff0c;分别测试正方形&#xff0c;旋转正方形以及六边形三种阵列形状下的光学涡旋。 2.测试软件版…

(论文研读)解决transform训练的不稳定性问题:SAMformer(时序预测)

论文链接&#xff1a;https://arxiv.org/abs/2402.10198 作者团队&#xff1a;华为诺亚方舟实验室&#xff08;华为巴黎研究中心&#xff09;&#xff0c;Laboratory of Informatics Paris Descartes (LIPADE) 巴黎笛卡尔大学&#xff08;第五大学&#xff09;信息学实验室 文…

【笔记篇】Davinci Configurator SomeIpXf模块

目录 1 简介1.1 架构概览2 功能描述2.1 特性2.2 初始化2.3 状态机2.4 主函数2.5 故障处理3 集成4 API描述5 配置1 简介 本文主要描述了AUTOSAR SomeIpXf模块的功能。 SomeIpXf主要用途是对数据进行SOME/IP格式的序列化和反序列化。 1.1 架构概览 SomeIpXf在AUTOSAR软件架构…

环绕音效是什么意思,电脑环绕音效怎么开

Boom 3D是一款专业的音效增强软件&#xff0c;它拥有先进的音效处理技术和丰富的音效设置选项&#xff0c;可以为用户打造出高度定制化的音频体验&#xff0c;Boom 3D还拥有简洁直观的界面&#xff0c;操作简单易懂&#xff0c;即使是音频技术的新手也能轻松上手。本篇文章就将…

Mybatis实现员工管理系统

文章目录 1.案例需求2.编程思路3.案例源码4.小结 1.案例需求 在上次做的父子模块的maven以及Ajax实现人工管理系统的基础上使用Mybatis实现员工管理系统的增删改查&#xff0c;具体运行效果如下&#xff1a; 2.编程思路 Mybatis框架的一般执行流程&#xff1a; 创建MyBati…

基于改进字典的大数据多维分析加速实践

一、背景 OLAP场景是大数据应用中非常重要的一环&#xff0c;能够快速、灵活地满足业务各种分析需求&#xff0c;提供复杂的分析操作和决策支持。B站主流湖仓使用Iceberg存储&#xff0c;通过建表优化可以实现常规千万级的指标统计秒级查询&#xff0c;这样就能快速搭建可视化报…

WRF输出结果的可视化展示与分析:以风速为例

1.前言 天气研究与预报 (WRF) 模型是一种功能强大的数值天气预报系统&#xff0c;用于模拟各种尺度的大气现象。WRF 生成大量输出数据&#xff0c;可为气象和气候研究、天气预报和环境管理提供宝贵信息。 WRF 输出数据通常存储在 netCDF 文件中&#xff0c;其中包含具有不同单位…

AI生成PPT怎么用?5款AI PPT工具助你轻松制作演示文稿

当你站在山西应县木塔之下&#xff0c;仰望这座千年古塔的雄伟与震撼&#xff0c;心中不禁涌起一股对历史与建筑艺术的敬畏之情。 想象一下&#xff0c;如果将这份震撼与敬仰融入到你的演示文稿中&#xff0c;那将是多么引人入胜的体验。而这一切&#xff0c;只需借助AI生成PP…

Kubernetes 运维工程师必备:K8s 基础面试题精编(三)

Kubernetes 运维工程师必备:K8s 基础面试题精编(三) 1. 在Kubernetes集群中如何查看Pod的日志?2. 如何将一个已经部署的应用程序从一个命名空间迁移到另一个命名空间?3. 如何更新Kubernetes集群中的应用程序镜像版本?4. 如何通过Kubernetes进行自动扩容?5. 如何手动扩容…

震惊!!大模型玩转JS逆向

不知道大家有没有被JS代码混淆折磨过&#xff0c;我之前搞爬虫的时候&#xff0c;也经常被OB代码混淆搞到心态崩溃&#xff0c;但是自从接触了大模型&#xff0c;腰不疼了&#xff0c;腿不酸了&#xff0c;OB代码直接交给大模型&#xff0c;简直不要太爽 这是一段经过OB混淆之…

盘点12个国内外主流CRM系统,哪一个能免费试用?

客户关系管理&#xff08;CRM&#xff09;系统已成为企业成功的关键工具。它们不仅帮助企业改善客户关系&#xff0c;还提高了销售效率和业务分析能力。在众多选择中&#xff0c;我们特意盘点了12个国内外主流的CRM系统&#xff0c;从地位、业务应用以及特点三方面进行解析&…

车牌号字符检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

车牌号字符检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着智能交通系统的快速发展&#xff0c;车牌号字…

代码随想录算法训练营第 50 天 |98. 所有可达路径

代码随想录算法训练营 Day50 代码随想录算法训练营第 50 天 |98. 所有可达路径 目录 代码随想录算法训练营前言LeetCode98. 所有可达路径 一、图论基础概念1、图的种类2、度3、连通性&#xff1a;节点的连通情况4、图的构造5、图的遍历方式 二、深度优先搜索1、深度优先搜索的…

最全诗词近10万诗词大全ACCESS\EXCEL数据库

其实破解弄到这个数据库我没有多少喜悦&#xff0c;原因是我已有的一些诗词比如全唐诗、全宋词等加起来的话也差不多这个数&#xff0c;但是因为这个数据库是完整破解的&#xff0c;比自己用已有的诗词数据库整合来说更加的好&#xff1b; 分类情况统计&#xff1a;汉代诗词&am…

v500大程序之IIC调试

虽然写的是IIC&#xff0c;但其实在system bd中并没有勾选IIC0、IIC1&#xff0c;而是根据IIC协议写了相关的函数&#xff08;不是我写的&#xff09;。 用到的RTC是DS3231芯片。 目前遇到的问题是&#xff1a; zynq调试成功&#xff1b;fmql调试失败&#xff0c;其中年、日、…

【AD24报错】原理图编译后出现Off grid ## at的解决方案

【AD24报错】原理图编译后出现Off grid ## at的解决方案 在使用AD24进行原理图设计过程中&#xff0c;编译时出现Off grid ## at…错误。 1 错误原因 &#xff08;1&#xff09;元件放置不准确 在放置元件时&#xff0c;如果没有将元件的引脚或中心点准确地放置在网格点上&…

进程的创建、终止

目录 前言1. 进程创建2. 进程终止3. exit && _exit 的异同3.1 相同点3.2 不同点 前言 紧接着进程地址空间之后&#xff0c;我们这篇文章开始谈论进程控制相关的内容&#xff0c;其中包括进程是如何创建的&#xff0c;进程终止的几种情况&#xff0c;以及进程异常终止的…

基于vue框架的比赛门票出售的系统12lh6(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,赛事类型,赛事信息,比赛队伍,比赛结果 开题报告内容 基于Vue框架的比赛门票出售系统开题报告 一、研究背景与意义 随着体育产业的蓬勃发展&#xff0c;各类体育赛事如雨后春笋般涌现&#xff0c;吸引了全球亿万观众的关注与参与…

域控ntdsutil修改架构、域命名、PDC、RID、结构主机

#笔记记录# 五大操作主机角色 架构主机&#xff08;schema master&#xff09;域命名主机&#xff08;naming master&#xff09;RID主机&#xff08;RID master&#xff09;基础架构主机&#xff08;infrastructure master&#xff09;PDC仿真器主机&#xff08;PDC&#xf…

算法力扣刷题记录 八十九【332.重新安排行程】

前言 回溯章节第13篇。 记录 八十九【332.重新安排行程】 一、题目阅读 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&am…