gh-140146: Use Tcl_CreateChannelHandler to enable piping to stdin with tkinter on Windows#140147
Closed
mdehoon wants to merge 5 commits intopython:mainfrom
Closed
gh-140146: Use Tcl_CreateChannelHandler to enable piping to stdin with tkinter on Windows#140147mdehoon wants to merge 5 commits intopython:mainfrom
mdehoon wants to merge 5 commits intopython:mainfrom
Conversation
This was referenced Oct 17, 2025
Contributor
Author
|
Unfortunately this still doesn't quite work on Windows. The callback function See this ticket on the Tcl website for more information: https://core.tcl-lang.org/tcl/tktview/1d06180006 |
Contributor
Author
|
Closing this PR, as this approach won't work reliably on Windows (see the Tcl ticket above). Issue #140146 will need some other solution. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When using tkinter in an interactive Python session, the
EventHookfunction inModules/_tkinter.cruns the Tcl/Tk event loop, and exits once data becomes available on stdin (i.e., when the user types in the next Python command).The
EventHookfunction monitors for input on stdin usingTcl_CreateFileHandler.As
Tcl_CreateFileHandleris Unix-only, for Windows instead the_kbhitfunction from Microsoft Windows is used.However, this prevents stdin from being used with a pipe (see Issue #140146 ), as
_kbhitchecks for a keystroke on an actual keyboard.This PR replaces
Tcl_CreateFileHandlerbyTcl_CreateChannelHandlerandTcl_GetStdChannel(TCL_STDIN), which do not depend on platform.This has two advantages:
Modules/_tkinter.c.