2010-07-27 13 views

cevap

9

Thats is easy! Ve hatta dişlere ihtiyacınız yok! Ancak, G/Ç kodunuzu biraz yeniden yapılandırmanız gerekecek. Tk, Xt’in XtAddInput() çağrısına eşdeğerdir; bu, bir dosya tanıtıcısında I/O mümkün olduğunda, Tk ana dizininden çağrılacak bir geri arama işlevini kaydetmenize olanak tanır. İşte gerekenler:

from Tkinter import tkinter 
tkinter.createfilehandler(file, mask, callback) 

dosya bir Python dosya veya soket nesnesi (aslında, bir fileno() metodu ile bir şey) ya da bir tamsayı dosya tanıtıcı olabilir. Maske sabitler tkinter biridir.READABLE veya tkinter.WRITABLE. aşağıdaki gibi geri arama denir: Eğer okuma için kullanılabilir kaç bayt seni tanımıyorum tarihi:

tkinter.deletefilehandler(file) 

Not kullanarak bitince geri arama kaydı gerekir

callback(file, mask) 

, Python dosya nesnesinin read veya readline yöntemlerini kullanamazsınız, çünkü bunlar önceden tanımlanmış bir bayt sayısını okumakta ısrar edecektir. Soketler için recv() veya recvfrom() yöntemleri iyi çalışır; Diğer dosyalar için, os.read(file.fileno(), maxbytecount). kullanın

+0

Bu, Tk'nın gerçekten çok mükemmel özelliklerinden biridir - bir dosya okunurken bir olayın alınması soket işlemeyi çok kolaylaştırır. –