一款为业余乒乓球比赛准备的计分工具:黑底白字、大屏友好、键盘 + 手柄双操作,支持单项与团体两种赛制。
一、缘起
单位、社区、球馆里的乒乓球比赛,裁判往往要一边盯着球、一边翻记分牌,稍一走神就容易记错分。市面上的计分软件要么功能太“重”,要么界面花哨,装在大屏幕上观众反而看不清。
于是我做了这个小工具,目标很明确:界面干净、比分明了、操作简单,让裁判和观众都省心。
二、它长什么样
- 黑底白字:比赛进行时全屏黑底白字,字体自动放大,后排观众也能一眼看清比分。
- 自动全屏:程序启动即全屏,无需额外设置。
- 窗口化编辑:需要设置选手、队伍时用鼠标键盘操作,界面回归常规 Windows 窗口配色,方便裁判填写。
比赛界面力求“零干扰”——除了比分、局分、双方名称和几个按钮,没有多余元素。
三、两种比赛模式
程序分为单项和团体两个独立程序,各司其职。
单项(单打):面向两名选手,设置选手姓名后即可开赛。
团体(队伍对抗):
- 赛制:
五场三胜制——按“场”计大分,每场打几局不限,胜一场队伍得 1 分;十五局八胜制——固定每场三局、共十五局,按“局”计大分,每赢一局队伍得 1 分。
- 比赛类型:男单、男双、女单、女双、混双。
- 赛制信息必须在开赛前(所有比分均为 0)设置,进行中不可修改,避免误改。
四、操作方式:键盘 + 手柄
键盘快捷键(两个程序一致)
| 快捷键 | 功能 |
|---|---|
W/S | 左侧 加分 / 减分 |
O/L | 右侧 加分 / 减分 |
B | 本局结束(结算本局胜负、保存并清零小分) |
N | 交换场地(队伍/选手、大小比分整体互换) |
V | 打开设置(单项设选手;团体设赛制、类型、队伍及选手) |
M | 查看比赛结果(全屏展示) |
Esc/Ctrl+C | 退出程序 |
界面上的每个按钮都标注了对应快捷键(如「加分」),鼠标点击同样有效。
游戏手柄
更推荐用手柄——裁判站在场边,按一下就行,不用找键盘。
程序自带一个手柄按键配置程序,可为下面六个功能分别绑定按键:
- 左侧加分、左侧减分、右侧加分、右侧减分、本局结束、交换场地;
- 支持绑定手柄按钮或方向键上/下;
- 点击「保存」后,配置会同时写入单项和团体两个配置文件,无需重复设置;
- 支持「恢复默认」,默认键位:方向键上=左侧加分、方向键下=左侧减分、Y=右侧加分、A=右侧减分、B=本局结束、X=交换场地;
- 若两个功能绑定了同一个按键,保存时会提示「按键重复」并拒绝保存。
手柄识别经验:程序基于 pygame/SDL 检测手柄,要求系统把手柄识别为Xbox 兼容控制器。实测用带 2.4G 接收器的手柄最稳;蓝牙手柄请务必切换到Xbox 模式(在 Windows 中显示为
Xbox Wireless Controller),否则会出现“系统显示已连接、程序却提示未检测到手柄”的情况。
五、防误触:计分自动校验
比赛中手滑多按一下是常事,程序对此做了校验:
- 单局获胜需达到 11 分且领先 2 分;
- 每次加分/减分时,程序会判断该操作是否会产生“不合理比分”,不合理则不予记录;
- 只有在按下「本局结束」时,才核对整局结果是否符合规则。
这样即使误触,也不会把比分记乱。
六、比赛结果与历史数据
- 按
M(或点「比赛结果」)进入全屏结果窗口:上方用大字显示双方局分,下方按电视转播样式逐局展示两名选手的小分; - 窗口内可查看历史数据:每次比赛的计分文件都会自动保存,可随时浏览、加载回顾。
七、数据文件
程序运行目录下会自动管理两类文件:
- 配置文件:
Config_IndividualEvents.json、Config_TeamEvents.json(选手、赛制、手柄按键等); - 比分记录:
Score_IndividualEvents_*.txt、Score_TeamEvents_*.txt(按日期时间命名,便于存档)。
配置文件与计分文件分开存放、互不干扰,方便备份和交接。
八、技术实现
- 语言/框架:Python,界面用PySide6(Qt),手柄检测用pygame;
- 打包:可用 PyInstaller 打包成单个
.exe,双击即用,目标机器无需安装 Python; - 组成:单项计分、团体计分、手柄按键配置,共三个程序。
代码结构清晰、注释完整,也适合作为 Python + Qt 界面编程的练手参考。
九、获取与反馈
程序免费,源码已放到 GitHub,欢迎 Star 和提 Issue:
GitHub:https://github.com/purifywater/Table-Tennis-Scoring-Software
仓库里的README.md有更完整的说明(含手柄连接排错指南)。使用中遇到问题或有改进建议,也欢迎邮件反馈:
📮jiangheng010@qq.com