Tk允许您注册和注销回调函数,当可以在文件描述符上进行I/O操作时,该函数将从Tk主循环调用。每个文件描述符只能注册一个处理程序。示例代码:

    1. import tkinter
    2. widget = tkinter.Tk()
    3. mask = tkinter.READABLE | tkinter.WRITABLE
    4. widget.tk.createfilehandler(file, mask, callback)
    5. ...
    6. widget.tk.deletefilehandler(file)

    此功能在Windows上不可用。
    由于您不知道有多少字节可供读取,您可能不想使用BufferedIOBase或TextIOBase read() 或readline() 方法,因为这些将坚持读取预定义的字节数。对于套接字,recv() 或recvfrom() 方法可以正常工作; 对于其他文件,请使用raw read或os.read(file.fileno(),maxbytecount)。
    Widget.tk.``createfilehandler(file, mask, func)
    注册文件处理程序回调函数func。file参数可以是具有fileno() 方法的对象 (例如file或socket对象),也可以是整数文件描述符。掩码参数是以下三个常数中任何一个的ted组合。回调调用如下:

    1. callback(file, mask)

    Widget.tk.``deletefilehandler(file)
    取消注册文件处理程序。
    tkinter.``READABLE``tkinter.``WRITABLE``tkinter.``EXCEPTION
    掩码参数中使用的常量。