Я запускаю небольшой чат-сервер, где люди могут общаться и общаться друг с другом. Я хочу использовать список tkinter для мониторинга входящих соединений.
Это мой графический интерфейс после запуска серверного скрипта.
После того, как пользователь подключился к серверу, в моем списке появляется сообщение «XXX.XX.XXX.XXX:XXXXX:
Я не знаю, почему список дублируется в этом пункте.
Прикрепленный код:
def accept_incoming_connections():
"""Sets up handling for incoming clients."""
while True:
client, client_address = SERVER.accept()
s = str("%s:%s has connected." % client_address)
client.send(bytes("Greetings from the cave!" + "Now type your name and press enter!", "utf8"))
addresses[client] = client_address
print(s)
App().insert_log(s)
Thread(target=handle_client, args=(client,)).start()
class App(tkinter.Tk):
def __init__(self, *args, **kwargs):
tkinter.Tk.__init__(self, *args, **kwargs)
self.label = tkinter.Label(self, text="", width=20, anchor="w")
self.label.pack(side="top", fill="both", expand=True)
self.title('Chat - Server')
self.geometry('400x400')
self.messages_frame = tkinter.Frame()
self.messages_frame.pack()
self.msg_list = tkinter.Listbox(self.messages_frame, height=15, width=50)
self.msg_list.insert(tkinter.END, 'Server ONLINE!')
self.msg_list.insert(tkinter.END, 'AP: ' + str(ap))
self.msg_list.insert(tkinter.END, 'IP: ' + str(ip))
self.msg_list.insert(tkinter.END, 'Port: ' + str(PORT))
self.msg_list.insert(tkinter.END, 'Waiting for connections..')
self.msg_list.pack()
def insert_log(self, logtext):
self.msg_list.insert(tkinter.END, logtext)
def create_gui():
app = App()
app.mainloop()
def main():
SERVER.listen(5) # Listens for 5 connections at max.
ACCEPT_THREAD = Thread(target=accept_incoming_connections)
ACCEPT_THREAD.start() # Starts the infinite loop
GUI = Thread(target=create_gui)
GUI.start() # Starts the gui
print('Server running. Waiting for clients...')
ACCEPT_THREAD.join()
SERVER.close()
if __name__ == "__main__":
main()
Элемент списка создается в def accept_incoming_connections (): -> App (). Insert_log (s)
Откуда происходит дублирование?