用python写一个培训用的计分器软件

主要功能:默认三个小组,也可以自己在进行添加。数据会实时保存到桌面的excle文件中,防止意外造成数据丢失。有一个悬浮球的功能,可以一直显示在ppt上面,实现快速打开程序界面加分。
其他说明:初学,不太懂,很多代码都是百度来的。还有一些细节处理不是很好,但是能力有限,不会处理,已经放弃了。
已知问题:1、打包的exe文件12MB比较大。2、不知道是不是我电脑问题还是程序问题,每次打开软件需要5秒左右,感觉比较久。3、悬浮球的问题,设计思路是一个png透明的球形logo,但是最终的效果是在深色背景下出现白色的毛边导致图像不是很清晰(原图png是没问题的)
使用方法:打开程序,然后会自动在桌面创建一个excle文件用于保存数据,每次点击程序的确定按钮都会对数据进行保存,分别记录总分和每次添加的分数。退出程序只能在系统托盘处的图标点击退出。
已经打包成成品,可以正常使用

下面是源码:
主程序代码和悬浮球代码

import tkinter as tk  # 导入 tkinter 库,用于创建 GUI 界面
from tkinter import ttk, messagebox  # 导入 ttk 和 messagebox 模块,用于创建更丰富的 GUI 元素和消息框
import pystray  # 导入 pystray 库,用于创建系统托盘图标
from pystray import MenuItem as item  # 导入 MenuItem 类,用于创建系统托盘菜单项
from PIL import Image, ImageDraw  # 导入 PIL 库,用于图像处理
import threading  # 导入 threading 模块,用于多线程操作
import os  # 导入 os 模块,用于与操作系统进行交互
from custom_dialog import CustomDialog  # 导入自定义对话框模块
import openpyxl  # 导入 openpyxl 库,用于处理 Excel 文件
from datetime import datetime  # 导入 datetime 模块,用于处理日期和时间
from floatingball import FloatingBall
from resource_p import Resource_path
 
 
class ScoreCalculator(tk.Tk):  # 创建一个名为 ScoreCalculator 的类,继承自 tk.Tk
    def __init__(self):  # 初始化方法
        super().__init__()  # 调用父类的初始化方法
        self.title("SW计分器")  # 设置窗口标题
        self.geometry("550x350")  # 设置窗口大小
        self.configure(bg="#f5f5f5")  # 设置窗口背景颜色
 
        self.resource_path = Resource_path()  # 实例化 Resource_path 对象
        self.icon_path = self.resource_path.resource_path("img_s.ico")  # 设置图标路径
        self.wm_iconbitmap(self.icon_path)  # 设置窗口图标
 
        self.create_tray_icon()  # 创建系统托盘图标
 
        self.groups = {"组别1": 0, "组别2": 0, "组别3": 0}  # 初始化分组字典
        self.group_vars = {}  # 存储分组变量的字典
        self.group_frames = {}  # 存储分组框架的字典
 
        self.create_widgets()  # 调用创建组件的方法
 
        self.protocol("WM_DELETE_WINDOW", self.hide_window)  # 设置窗口关闭时的处理方法
        self.tray_icon = None  # 初始化系统托盘图标变量
        self.tray_thread = None  # 初始化系统托盘线程变量
 
        # 创建悬浮球
        self.floating_ball_root = tk.Toplevel(self)
        screen_width = self.winfo_screenwidth()  # 获取屏幕宽度和高度
        screen_height = self.winfo_screenheight()
        # 设置悬浮球的默认位置为屏幕右下角,假设悬浮球大小为50x50
        self.floating_ball_root.geometry(f"+{screen_width - 200}+{screen_height - 800}")
        # self.floating_ball_root.geometry("+100+100")  # 设置悬浮球的初始位置
        self.floating_ball = FloatingBall(self.floating_ball_root, self.show_window)
 
        self.excel_file = self.create_excel_file()  # 创建 Excel 文件  excel_file = file_path
 
    def create_excel_file(self):  # 创建 Excel 文件的方法
        try:  # 尝试创建 Excel 文件
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据服务生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值