Python 服务器未在使用Tkinter生成的文本小部件中显示从客户端获取的消息

Python 服务器未在使用Tkinter生成的文本小部件中显示从客户端获取的消息,python,Python,它不显示客户端发送的文本,客户端发送的消息预计将显示在生成的文本框中,但不显示。 请帮我做这个。问题基本上是如何将从客户端接收到的文本显示到服务器中的文本小部件 import socket import sys from Tkinter import * import tkMessageBox HOST = '' # Symbolic name meaning all available interfaces PORT = 40025 # Arbitrary non-privileged p

它不显示客户端发送的文本,客户端发送的消息预计将显示在生成的文本框中,但不显示。 请帮我做这个。问题基本上是如何将从客户端接收到的文本显示到服务器中的文本小部件

import socket
import sys
from Tkinter import *
import tkMessageBox
HOST = ''   # Symbolic name meaning all available interfaces
PORT = 40025 # Arbitrary non-privileged port

# Datagram (udp) socket
try :
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    print 'Socket created'
except socket.error, msg :
    print 'Failed to create socket. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
    sys.exit()

try:
    s.bind((HOST, PORT))
except socket.error , msg:
    print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
    sys.exit()

print 'Socket bind complete'

def talk():

#now keep talking with the client
  while 1:
    # receive data from client (data, addr)
    d = s.recvfrom(1024)
    text_area.insert(END,'Client:+'+d+'\n')
    data = d[0]
    addr = d[1]

    if not data: 
        break

    reply = 'OK...' + data

    s.sendto(reply , addr)
    text_area.insert(END,'Server:'+reply+'\n')
    print 'Message[' + addr[0] + ':' + str(addr[1]) + '] - ' + data.strip()
    s.blocking(0)
    mainloop()



root = Tk()
frame = Frame(root)
frame.pack()
root.geometry("500x500")
text_area = Text(frame)
text_area.pack(side=BOTTOM)
talk()














root.mainloop()
s.close()

您有两个或三个不同的无限循环,这几乎保证了您的程序无法正常工作。我不知道对mainloop的一次调用是什么-您是不是在尝试调用root.mainloop,但输入错误


如果您有一个tkinter程序,那么必须只调用根窗口的mainloop函数一次,并且不应该运行其他无限循环。您可以使用after非常轻松地轮询套接字,也可以使用单独的线程。你不能做的是在你的GUI代码中加入一个无限循环

那么这个问题的解决方案是什么呢,伙计。