主要功能:默认三个小组,也可以自己在进行添加。数据会实时保存到桌面的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 文件