René's URL Explorer Experiment


Title: Harden ttk/tkinter GUI tests against display scaling (DPI) · Issue #153716 · python/cpython · GitHub

Open Graph Title: Harden ttk/tkinter GUI tests against display scaling (DPI) · Issue #153716 · python/cpython

X Title: Harden ttk/tkinter GUI tests against display scaling (DPI) · Issue #153716 · python/cpython

Description: Several test_ttk and test_tkinter GUI tests probe widget elements at fixed pixel coordinates (typically (5, 5)) or scan a fixed pixel range (e.g. range(5, 100, 5), range(0, 100, 10)). ttk element geometry — tab padding, the focus ring, t...

Open Graph Description: Several test_ttk and test_tkinter GUI tests probe widget elements at fixed pixel coordinates (typically (5, 5)) or scan a fixed pixel range (e.g. range(5, 100, 5), range(0, 100, 10)). ttk element g...

X Description: Several test_ttk and test_tkinter GUI tests probe widget elements at fixed pixel coordinates (typically (5, 5)) or scan a fixed pixel range (e.g. range(5, 100, 5), range(0, 100, 10)). ttk element g...

Opengraph URL: https://github.com/python/cpython/issues/153716

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Harden ttk/tkinter GUI tests against display scaling (DPI)","articleBody":"Several `test_ttk` and `test_tkinter` GUI tests probe widget elements at fixed pixel coordinates (typically `(5, 5)`) or scan a fixed pixel range (e.g. `range(5, 100, 5)`, `range(0, 100, 10)`). ttk element geometry — tab padding, the focus ring, trough insets, row height — scales with the display DPI (`tk scaling`), so a fixed pixel that lands on the intended element at a normal scaling lands on a different element, or misses it entirely, at a high DPI.\n\nThis produces two failure modes:\n\n- The test fails outright at high DPI (e.g. `NotebookTest.test_traversal` clicked `(5, 5)`, which no longer lands on a tab at scaling 2.0).\n- The test passes *by accident* — its assertion accepts `''` (the \"nothing here\" result), so it never actually exercises the behaviour it claims to (e.g. `ScaleTest.test_identify` always identified `''` at `(5, 5)`; the darwin branch of `test_traversal` asserted `identify(5, 5) == ''`).\n\nBoth are latent: they surface on Retina/HiDPI macOS (Homebrew Tk 9, scaling 2.0) and any X11 display with a high `-dpi`.\n\nFix: compute probe coordinates from the widget's own realized geometry instead of hardcoding pixels — `ttk::notebook index @x,y` for a point guaranteed to lie on a given tab, `winfo_width()/winfo_height()` centre for Entry, `Scale.coords()` for the trough, and scanning the real `winfo_height()` for Treeview rows. This makes the tests position-, theme-, platform- and scaling-agnostic, and removes the darwin coordinate special-cases.\n\nTest-only change. Affects `test_ttk` (`EntryTest.test_identify`, `NotebookTest.test_tab_identifiers`, `NotebookTest.test_traversal`, `TreeviewTest.test_tag_bind`) and `test_tkinter` (`ScaleTest.test_identify`). Verified across scaling 1–6 (DPI 72–432) on Tk 8.6.17 and 9.0.3.\n\n\n\u003c!-- gh-linked-prs -->\n### Linked PRs\n* gh-153717\n* gh-153737\n* gh-153738\n* gh-153743\n\u003c!-- /gh-linked-prs -->\n","author":{"url":"https://github.com/serhiy-storchaka","@type":"Person","name":"serhiy-storchaka"},"datePublished":"2026-07-14T19:21:58Z","url":"https://github.com/python/cpython/issues/153716"}

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:8f92dfcd-843c-603a-c351-1762a52b2454
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-id8FEA:1E1E4D:3B0370:5153E3:6AECCA4E
html-safe-nonceee4a9db394fefe9e9333e10b56de33a7ed00775feff7d4d444fb0d86580cb675
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4RkVBOjFFMUU0RDozQjAzNzA6NTE1M0UzOjZBRUNDQTRFIiwidmlzaXRvcl9pZCI6IjczNjc5NTYxOTEyMzAzNDc4NTQiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac1f87bbafa0a66ff624320495805e12e0121038f198814ce65711ef1b78ea0095
hovercard-subject-tagissue:4886325438
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/153716/issue_layout
twitter:imagehttps://opengraph.githubassets.com/6050a73e79789b7e5fcbbc6e35d8334da791f1f12e29a8ef87775601b166c79f/python/cpython/issues/153716
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/6050a73e79789b7e5fcbbc6e35d8334da791f1f12e29a8ef87775601b166c79f/python/cpython/issues/153716
og:image:altSeveral test_ttk and test_tkinter GUI tests probe widget elements at fixed pixel coordinates (typically (5, 5)) or scan a fixed pixel range (e.g. range(5, 100, 5), range(0, 100, 10)). ttk element g...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameserhiy-storchaka
hostnamegithub.com
expected-hostnamegithub.com
Nonedc0b519c5798dc1150b88dc4c06a8b9634d0069218dc04e469970e76aad74016
turbo-cache-controlno-preview
go-importgithub.com/python/cpython git https://github.com/python/cpython.git
octolytics-dimension-user_id1525981
octolytics-dimension-user_loginpython
octolytics-dimension-repository_id81598961
octolytics-dimension-repository_nwopython/cpython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id81598961
octolytics-dimension-repository_network_root_nwopython/cpython
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasedb139f0bf57b59bf9a8c4abb0849924d6c6ca559
ui-targetfull
theme-color#1e2327
color-schemelight dark
react-app-nameissues

Links:

Skip to contenthttps://github.com/python/cpython/issues/153716#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fissues%2F153716
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fissues%2F153716
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=python%2Fcpython
Reloadhttps://github.com/python/cpython/issues/153716
Reloadhttps://github.com/python/cpython/issues/153716
Reloadhttps://github.com/python/cpython/issues/153716
pythonhttps://github.com/python
cpythonhttps://github.com/python/cpython
Codehttps://github.com/python/cpython
Issues5k+ (5k+)https://github.com/python/cpython/issues
Pull requests2.3k (2.3k)https://github.com/python/cpython/pulls
Actionshttps://github.com/python/cpython/actions
Projectshttps://github.com/python/cpython/projects
Security and qualityhttps://github.com/python/cpython/security
Insightshttps://github.com/python/cpython/pulse
https://github.com/python/cpython
New issuehttps://github.com/login?return_to=https://github.com/python/cpython/issues/153716
New issuehttps://github.com/login?return_to=https://github.com/python/cpython/issues/153716
Harden ttk/tkinter GUI tests against display scaling (DPI)https://github.com/python/cpython/issues/153716#top
3.13only security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.13%22
3.14bugs and security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.14%22
3.15bugs and security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.15%22
3.16new features, bugs and security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.16%22
testsTests in the Lib/test dirhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22tests%22
topic-tkinterhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22topic-tkinter%22
https://github.com/serhiy-storchaka
serhiy-storchakahttps://github.com/serhiy-storchaka
on Jul 14, 2026https://github.com/python/cpython/issues/153716#issue-4886325438
gh-153716: Harden ttk/tkinter GUI tests against display scaling #153717https://github.com/python/cpython/pull/153717
[3.15] gh-153716: Harden ttk/tkinter GUI tests against display scaling (GH-153717) #153737https://github.com/python/cpython/pull/153737
[3.14] gh-153716: Harden ttk/tkinter GUI tests against display scaling (GH-153717) #153738https://github.com/python/cpython/pull/153738
[3.13] gh-153716: Harden ttk/tkinter GUI tests against display scaling (GH-153717) #153743https://github.com/python/cpython/pull/153743
serhiy-storchakahttps://github.com/serhiy-storchaka
on Jul 14, 2026https://github.com/python/cpython/issues/153716#event-27982878982
pythongh-153716: Scan for the ttk Spinbox and Combobox arrow, not a f…https://github.com/serhiy-storchaka/cpython/commit/e65338738309ab4b0d5d8c3491160124bf80e3e7
pythongh-153716https://github.com/python/cpython/issues/153716
e653387https://github.com/serhiy-storchaka/cpython/commit/e65338738309ab4b0d5d8c3491160124bf80e3e7
https://github.com/terryjreedy
terryjreedyhttps://github.com/terryjreedy
on Jul 15, 2026https://github.com/python/cpython/issues/153716#issuecomment-4975644356
aiskhttps://github.com/aisk
testsTests in the Lib/test dirhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22tests%22
topic-tkinterhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22topic-tkinter%22
on Jul 15, 2026https://github.com/python/cpython/issues/153716#event-27994188411
serhiy-storchakahttps://github.com/serhiy-storchaka
on Jul 15, 2026https://github.com/python/cpython/issues/153716#event-27995389906
gh-153716: Harden ttk/tkinter GUI tests against display scaling (GH-1…https://github.com/python/cpython/commit/87411d0742f070b1424c08b41cf3af49d377b215
gh-153716https://github.com/python/cpython/issues/153716
GH-1…https://github.com/python/cpython/pull/153717
87411d0https://github.com/python/cpython/commit/87411d0742f070b1424c08b41cf3af49d377b215
[3.14] gh-153716: Harden ttk/tkinter GUI tests against display scaling (https://github.com/python/cpython/commit/2ec8fcfa4e647592e0a6e797372f3c4c2015d74b
gh-153716https://github.com/python/cpython/issues/153716
2ec8fcfhttps://github.com/python/cpython/commit/2ec8fcfa4e647592e0a6e797372f3c4c2015d74b
[3.15] gh-153716: Harden ttk/tkinter GUI tests against display scaling (https://github.com/python/cpython/commit/accfc342e792d461eecf6bcbdd242f126822f325
gh-153716https://github.com/python/cpython/issues/153716
accfc34https://github.com/python/cpython/commit/accfc342e792d461eecf6bcbdd242f126822f325
https://github.com/serhiy-storchaka
serhiy-storchakahttps://github.com/serhiy-storchaka
on Jul 15, 2026https://github.com/python/cpython/issues/153716#issuecomment-4977175947
#153741https://github.com/python/cpython/issues/153741
serhiy-storchakahttps://github.com/serhiy-storchaka
completedhttps://github.com/python/cpython/issues?q=is%3Aissue%20state%3Aclosed%20archived%3Afalse%20reason%3Acompleted
on Jul 15, 2026https://github.com/python/cpython/issues/153716#event-27999040943
serhiy-storchakahttps://github.com/serhiy-storchaka
3.13only security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.13%22
3.14bugs and security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.14%22
3.15bugs and security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.15%22
3.16new features, bugs and security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.16%22
on Jul 15, 2026https://github.com/python/cpython/issues/153716#event-27999143175
serhiy-storchakahttps://github.com/serhiy-storchaka
on Jul 15, 2026https://github.com/python/cpython/issues/153716#event-27999344085
[3.13] gh-153716: Harden ttk/tkinter GUI tests against display scaling (https://github.com/python/cpython/commit/0f1e563d1bc7f0be3699cd59a984537b4eafd9e8
gh-153716https://github.com/python/cpython/issues/153716
0f1e563https://github.com/python/cpython/commit/0f1e563d1bc7f0be3699cd59a984537b4eafd9e8
Sign up for freehttps://github.com/signup?return_to=https://github.com/python/cpython/issues/153716
Sign in to commenthttps://github.com/login?return_to=https://github.com/python/cpython/issues/153716
3.13only security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.13%22
3.14bugs and security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.14%22
3.15bugs and security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.15%22
3.16new features, bugs and security fixeshttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%223.16%22
testsTests in the Lib/test dirhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22tests%22
topic-tkinterhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22topic-tkinter%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.