So drucken, ich habe einen Server komplett in Python geschrieben 2.7:ständig Daten von einem Server aktualisieren und zu einem Textfeld
from socket import *
from select import *
HOST = "127.0.0.1"
PORT = 1993
server = socket(AF_INET, SOCK_STREAM)
server.bind((HOST, PORT))
server.listen(5)
clients = []
def getClients():
to_use = []
for client in clients:
to_use.append(client[0])
return to_use
while(True):
read, write, error = select([server],[],[],0)
if(len(read)):
client, address = server.accept()
clients.append([client, address, []])
to_use = getClients()
try:
read, write,error = select(to_use,[],[],0)
if(len(read)):
for client in read:
data = client.recv(1024)
print(bytes.decode(data))
if(data == 0):
for c in clients:
if c[0] == client:
clients.remove(c)
break
else:
for c in clients:
c[2].append(data)
except:
pass
try:
to_use = getClients()
read, write, error = select([], to_use, [], 0)
if(len(write)):
for client in write:
for c in clients:
if c[0] == client:
for data in c[2]:
sent = client.send(data)
if(sent == len(data)):
c[2].remove(data)
break
except:
pass
Was ich tun muß, ist ständiges Updates für Daten (Nachrichten) erhalten von der Server und drucken sie in ein Textfeld in Tkinter.
Der Empfangscode:
from socket import *
from select import *
HOST = "127.0.0.1"
PORT = 1993
sock = socket(AF_INET, SOCK_STREAM)
sock.connect((HOST, PORT))
while True:
data = bytes.decode(sock.recv(1024))
print data
Es muss nicht Tkinter, aber das ist das, was ich in versucht; solange es eine GUI verwendet. Mach dir keine Sorgen über das Senden von Nachrichten, die ich nur in der Lage sein muss, die Daten zu erhalten und sie in das Textfeld/den Bereich zu drucken.
In diesem speziellen Fall ist der Aufruf von 'update' sehr notwendig. Ohne sie kann tkinter keine Ereignisse verarbeiten. Wenn Ereignisse (einschließlich Ereignisse, die eine Aktualisierung des Fensters auslösen) nicht verarbeitet werden können, können die Daten nicht angezeigt werden. –