Это просто!И вам даже не нужны темы!Но вам придется немного реструктурировать свой код ввода-вывода.Tk имеет аналог вызова Xt XtAddInput (), который позволяет зарегистрировать функцию обратного вызова, которая будет вызываться из основной цепочки Tk, когда ввод / вывод возможен для файлового дескриптора.Вот что вам нужно:
from Tkinter import tkinter
tkinter.createfilehandler(file, mask, callback)
Файл может быть файлом Python или объектом сокета (фактически, любым с методом fileno ()) или дескриптором целочисленного файла.Маска является одной из констант tkinter.READABLE или tkinter.WRITABLE.Обратный вызов вызывается следующим образом:
callback(file, mask)
Вы должны отменить регистрацию обратного вызова, когда закончите, используя
tkinter.deletefilehandler(file)
Примечание: поскольку вы не знаете, сколько байтов доступнодля чтения нельзя использовать методы чтения или чтения строки объекта Python, поскольку они будут настаивать на чтении заранее определенного числа байтов.Для сокетов методы recv () или recvfrom () будут работать нормально;для других файлов используйте os.read(file.fileno(), maxbytecount).