summaryrefslogtreecommitdiffstats
path: root/Doc/library
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2015-05-17 18:50:06 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2015-05-17 18:50:06 (GMT)
commit6883faf49b4a16566cc4b1a3ea18ba125215ecc0 (patch)
tree8df2bfbbf3a5b3e619a65ce5d9f88b2b11472e95 /Doc/library
parentfdb23c2fe5499d26701fa34873c1cdc347adcb80 (diff)
parentd986563a06409ec36f8f580453fbeda96e695d3f (diff)
downloadcpython-6883faf49b4a16566cc4b1a3ea18ba125215ecc0.zip
cpython-6883faf49b4a16566cc4b1a3ea18ba125215ecc0.tar.gz
cpython-6883faf49b4a16566cc4b1a3ea18ba125215ecc0.tar.bz2
Merge with 3.4
Diffstat (limited to 'Doc/library')
-rw-r--r--Doc/library/tkinter.rst50
1 files changed, 50 insertions, 0 deletions
diff --git a/Doc/library/tkinter.rst b/Doc/library/tkinter.rst
index 3b6c681..8b738c3 100644
--- a/Doc/library/tkinter.rst
+++ b/Doc/library/tkinter.rst
@@ -794,3 +794,53 @@ some widget (e.g. labels, buttons, menus). In these cases, Tk will not keep a
reference to the image. When the last Python reference to the image object is
deleted, the image data is deleted as well, and Tk will display an empty box
wherever the image was used.
+
+
+.. _tkinter-file-handlers:
+
+File Handlers
+-------------
+
+Tk allows you to register and unregister a callback function which will be
+called from the Tk mainloop when I/O is possible on a file descriptor.
+Only one handler may be registered per file descriptor. Example code::
+
+ import tkinter
+ widget = tkinter.Tk()
+ mask = tkinter.READABLE | tkinter.WRITABLE
+ widget.tk.createfilehandler(file, mask, callback)
+ ...
+ widget.tk.deletefilehandler(file)
+
+This feature is not available on Windows.
+
+Since you don't know how many bytes are available for reading, you may not
+want to use the :class:`~io.BufferedIOBase` or :class:`~io.TextIOBase`
+:meth:`~io.BufferedIOBase.read` or :meth:`~io.IOBase.readline` methods,
+since these will insist on reading a predefined number of bytes.
+For sockets, the :meth:`~socket.socket.recv` or
+:meth:`~socket.socket.recvfrom` methods will work fine; for other files,
+use raw reads or ``os.read(file.fileno(), maxbytecount)``.
+
+
+.. method:: Widget.tk.createfilehandler(file, mask, func)
+
+ Registers the file handler callback function *func*. The *file* argument
+ may either be an object with a :meth:`~io.IOBase.fileno` method (such as
+ a file or socket object), or an integer file descriptor. The *mask*
+ argument is an ORed combination of any of the three constants below.
+ The callback is called as follows::
+
+ callback(file, mask)
+
+
+.. method:: Widget.tk.deletefilehandler(file)
+
+ Unregisters a file handler.
+
+
+.. data:: READABLE
+ WRITABLE
+ EXCEPTION
+
+ Constants used in the *mask* arguments.