`tkinter.ttk.Progressbar` stubs are outdated for Tk 9.0
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 75/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- python
- Domain
- developer-experience
Research direction
Start in stdlib/tkinter/ttk.pyi around lines 803-836 where the explicit Progressbar.__init__ signature lives. Compare it against the Tk 9.0 ttk_progressbar manual page linked in the issue, add keyword-only parameters for the new text options (text, anchor, font, foreground, justify, wraplength) and remove options Tk 9.0 dropped. Check how neighboring stubs version-gate Tk-specific options, since sys.version_info may not reflect the linked Tk version, and run the typeshed check script on the file when done.
Written by the indexing model from the issue text.
Description
NOTE: The detail of the issue is raised and verified by human, but these text are drafted with the assistance of AI, since my English is poor.
Description
Tk 9.0 added native text display support to ttk::progressbar, but the current
typeshed stub for tkinter.ttk.Progressbar does not reflect the Tk 9.0 option
set.
According to the Tk 9.0 ttk_progressbar manual page:
https://www.tcl-lang.org/man/tcl9.0/TkCmd/ttk_progressbar.html
Tk 9.0 ttk::progressbar supports text-related options such as:
-anchor-font-foreground-justify-text-wraplength
These options did not exist in Tk 8.6 and earlier. Tk 9.0 also removes support
for some options that were accepted by earlier versions, so the stub currently
does not match either the new or the removed parts of the Tk 9.0 option set.
The relevant typeshed file is:
https://github.com/python/typeshed/blob/main/stdlib/tkinter/ttk.pyi#L803-L836
Example
With Python 3.14.9 and Tk 9.0.4, the following is valid:
from tkinter import ttk
bar = ttk.Progressbar(
text="Loading",
anchor="center",
font=("TkDefaultFont", 10),
) # make a progressbar with a text of "Loading" packed in the center of widget
bar.configure(text="Done")
However, the explicit Progressbar.__init__ signature in typeshed does not
include text, anchor, font, foreground, justify, or wraplength.
Depending on the current fallback signature, this may be accepted through
**kw: Any, but the options are still not modeled explicitly, so IDE
completion and typed usage are outdated. If some options are no longer valid
in Tk 9.0, the stub may also continue to advertise options that now fail at
runtime.
Requested change
Please update tkinter.ttk.Progressbar to match the Tk 9.0 option set, at
least by adding explicit keyword-only parameters for the new text-related
options to Progressbar.__init__ and, where appropriate, to
configure/config.
One open question is version gating: tkinter can be built against different
Tk versions, so keying this only on sys.version_info may not always be
correct. (See P.S. below)
Additional context
I searched the existing typeshed issues and did not find a dedicated report for
ttk.Progressbar being out of date with Tk 9.0. This seems to be a gap in the
current stubs.
P.S. : AI also generates texts as shown below, but I can't verify the detail, since I didn't find any description of major version update on bundled tcl/tk in What’s new in Python 3.14:
https://docs.python.org/3.14/whatsnew/3.14.html#tkinter
Since Python 3.14, the official binary installers have begun shipping Tcl/Tk 9.0 (e.g. the macOS installer uses Tcl/Tk 9.0.3 as of Python 3.14.5, and Windows installers also bundle Tcl/Tk 9.0). This means the Tk 9.0 Progressbar options are now relevant to users of official CPython builds, not just those who manually build against Tk 9.
- Dominant language
- Python
- Stars
- 5.1k
- Forks
- 2.1k
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 77
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from python/typeshed
-
`networkx.set_edge_attributes` should support scalar value + namePossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
Maintainers usually reply within 1 day
-
false alarm on decode callPossibly taken @jw9829 claimed this 30 days ago. Openhelp wanted stubs: false positive
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
python/typeshed#16441 · 1 comment ·
Maintainers usually reply within 1 day
-
Add stubs for stdlib `_colorize` modulePossibly taken @anistark claimed this 48 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
python/typeshed#16361 · 2 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
[rasterio] `transform.rowcol` return typing possibly incorrect?Possibly taken @ryux1 claimed this 51 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
python/typeshed#16331 · 3 comments ·
Maintainers usually reply within 1 day
Similar issues
-
bug P1
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Toloka/tolokaforge#1947 ·
Maintainers usually reply within 1 day
-
SageMaker provider: streaming fails with NoStreamDataError on DJL Serving (LMI) endpointsPossibly taken @balajiaru claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
UKGovernmentBEIS/inspect_ai#6127 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
pydot/pydot#601 · 4 comments ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
letsencrypt/cp-cps#361 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100