You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Tkinter apps can't be distributed on the macOS App Store #129247
If you use tkinter in your app, and package the app for distribution in the macOS App Store, the app will be rejected with a message to the effect that:
The use of non-public or deprecated APIs is not permitted on the App Store, as they can lead to a poor user experience should these APIs change and are otherwise not supported on Apple platforms.
This ticket is mostly to log the issue as something that can affect macOS users; there's not much we can do to fix it until such time as Tk fixes the problem and releases the fix in a version that Python can incorporate into a release (or, I guess, Apple changes their App Store review policies).
CPython versions tested on:
3.14, 3.13, 3.12, 3.11, 3.10, 3.9, CPython main branch
I'm not sure that would actually fix the problem - the issue is the existence of the symbol at all. Apple's already demonstrated that their app rejection processes rely heavily on fairly naïve pattern matches (see #120522); I wouldn't be at all surprised that if you wrote some code that just happened to use the name _NSWindowDidOrderOnScreenNotification as a symbol, it would be rejected, even if the code had nothing to do with Cocoa.
It's also an issue internal to the Tk dylib, not the tkinter.so Python module; so this sort of approach would require doing binary patching (or source patching) one of our upstream dependencies.... just so people can put Tk apps in the App Store. I'm not convinced that juice is worth the squeeze.
Fixed upstream: Tk no longer references the private NSWindowDidOrderOnScreenNotification (a9969f7ffd). The fix is in the 9.0 branch and in 9.1b1, so it will be in Tk 9.0.5; it was not backported to 8.6, and applications which need the App Store have to ship Tk 9.
Activity
hoodmane commentedon Jan 24, 2025
Maybe you could patch tkinter.so to stub out the symbol to a trap?
freakboy3742 commentedon Jan 24, 2025
I'm not sure that would actually fix the problem - the issue is the existence of the symbol at all. Apple's already demonstrated that their app rejection processes rely heavily on fairly naïve pattern matches (see #120522); I wouldn't be at all surprised that if you wrote some code that just happened to use the name
_NSWindowDidOrderOnScreenNotificationas a symbol, it would be rejected, even if the code had nothing to do with Cocoa.It's also an issue internal to the Tk dylib, not the
tkinter.soPython module; so this sort of approach would require doing binary patching (or source patching) one of our upstream dependencies.... just so people can put Tk apps in the App Store. I'm not convinced that juice is worth the squeeze.serhiy-storchaka commentedon Sep 22, 2026
Fixed upstream: Tk no longer references the private
NSWindowDidOrderOnScreenNotification(a9969f7ffd). The fix is in the 9.0 branch and in 9.1b1, so it will be in Tk 9.0.5; it was not backported to 8.6, and applications which need the App Store have to ship Tk 9.