代码行数计数器

2024-08-23 17:44
文章标签 代码 计数器

本文主要是介绍代码行数计数器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

做了个记录代码函数的小程序,后缀名记得设置为.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_linesreturn 0def 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) * 100progress_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, rankdef 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_linestry: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.chinasem.cn/article/1100069

相关文章

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Java强制转化示例代码详解

《Java强制转化示例代码详解》:本文主要介绍Java编程语言中的类型转换,包括基本类型之间的强制类型转换和引用类型的强制类型转换,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录引入基本类型强制转换1.数字之间2.数字字符之间引入引用类型的强制转换总结引入在Java编程语言中,类型转换(无论

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu