A Windows‑style stopwatch with laps, per‑lap reset on the main display, fastest/slowest indicators, running averages, an optional always‑on‑top mini widget, and automatic text logging.
-
Start / Pause, ⌨ Lap, ↺ Reset (buttons only; no keyboard shortcuts).
-
Per‑lap reset: when you press Lap, the large timer resets to
00:00:00.00for the next lap. -
Laps table:
# | Lap | Total | Avg.- “Fastest” and “Slowest” appear inside the Lap cell and are color‑tinted (green/red).
- Total is the cumulative time at that lap.
- Avg is the average up to that row.
-
Session average label updates every minute and also on Lap/Reset.
-
Always on top toggle.
-
Compact widget (borderless, draggable, stays on top) with Play/Pause, Lap, Reset.
-
Automatic logging to a text file in the same folder as the script or EXE.
- Windows with Python 3.8+ installed.
- Uses only the Python standard library (
tkinter,time, etc.). No extra packages.
-
Install Python from Microsoft Store
- Press Windows key, type python, then press Enter. Windows opens the Microsoft Store page for Python.
- Click Get/Install and wait for completion.
- If
pythonis not recognized later, open Settings → Apps → App execution aliases and ensure python.exe and python3.exe are On.
-
Put the script in a folder
- Example folder:
C:/Users/tomsw/Downloads/good sales. - Save the file as quickchores.py in that folder.
- Example folder:
-
Open Command Prompt in that folder
- Open the folder in File Explorer.
- Click the address bar, type cmd, and press Enter. A Command Prompt opens already set to that folder.
- You can also type powershell instead of
cmdif you prefer PowerShell.
-
Verify Python is available
python --version
- If that fails, try:
py --version
-
Save the file as
quickchores.py. -
Open PowerShell in the folder that contains the file.
-
Run:
python quickchores.py
- Start / Pause: large circular play/pause button.
- Lap: circular ⌨ button.
- Reset: circular ↺ button.
- Widget On/Off: shows or hides the floating mini widget.
- Always on top: keeps the main window above other windows.
-
A file named
stopwatch_log.txtis created in the same folder as the script or bundled EXE. -
On first Start it writes
[SESSION START] <timestamp>. -
Each Lap appends:
LAP NN | lap=HH:MM:SS.hh | total=HH:MM:SS.hh | avg=HH:MM:SS.hh -
On Reset or window close it writes
[SESSION END]with totals and a blank line. -
The file is flushed on each write.
To change the log filename, edit the line that sets self.log_path near the top of the class.
- No window appears: ensure you are using Python 3.8+ and that
tkinteris installed (on Windows it is included). - Colors/labels not tinted: the Treeview uses the “clam” theme when available. It will still show the text tags even without tint.
- Widget not draggable: click and drag anywhere inside the widget body.
- There are no keyboard shortcuts by design, so you can type in other applications while the stopwatch is running.
- The widget opens in the top‑right by default and is movable.
Use, modify, and distribute in your project as needed.