!!! warning "Pre-2.0 layout"
This page describes the pre-2.0 flat main.py layout. As of 2.0.0 the library is the
programver package (VersionDialog, programver/dialog.py) and main.py is a demo,
not the module itself — see Known Issues for what changed and
the README for current usage. This
page is pending a rewrite for 2.0.
ProgramVer() loads imgs/dfdlogo.gif, which is not in the repository, so Tkinter raises a
TclError before the window appears. Supply your own logo at that path — GIF or PNG.
Recorded in internal/known-issues.md.
They read LICENSE.txt and EULA.txt. Neither exists here — the repository ships LICENSE.md,
and there is no EULA. Add plain-text files, or repoint the calls.
The suite mocks every file read and every Tk widget, so it never touches the filesystem or a display. Every line runs; every line runs against a mock. See Testing.
The blurb, the trademark line, and the version are placeholder content for you to replace — each
marked # change as needed. They name a different company and quote the GPL.
For a tool whose purpose is displaying licence information, shipping the wrong licence as the default is worth fixing. Same known-issues file.
from main import ProgramVer
ProgramVer()Copy main.py and imgs/ into your project and edit the strings — see
Configuration.
There is no such file; the module is main.py. Renaming it on the way into your project makes
the old instruction true.
Yes. ProgramVer() calls mainloop() itself, so it returns when the window is closed. Calling
it from an existing Tkinter app starts a second event loop — see
Architecture.
PNG yes, JPEG no. Tkinter's PhotoImage reads GIF and PNG only; JPEG needs Pillow.
Neither. It reads local files and draws a window.
Because it is in the standard library. A version window that added a GUI dependency to every project it was copied into would not be worth copying.
Yes, attached to releases.