Как подружить сервер на python и tkinter?

Есть вот такой сервер:

import socket
import time

host = socket.gethostbyname(socket.gethostname())
port = 9090

print("Server IP:", host)
print("Server Port:", port)

clients = []
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
print("Server Started")

while True:
        try:
            # Получаем сообщение клиента
            data, addr = s.recvfrom(4096)
            print("Client", addr[0], "|", addr[1], "connected")

            if addr not in clients:
                clients.append(addr)

            itsatime = time.strftime("%Y-%m-%d-%H.%M.%S", time.localtime())

            print("[" + addr[0] + "]=[" + str(addr[1]) + "]=[" + itsatime + "]/", end="")
            msg = data.decode("utf-8")
            print(msg)
            for client in clients:
                if addr != client:
                    s.sendto(data, client)
                else:
                    if "=>" not in data.decode("utf-8"):
                        s.sendto("\ndelivered\n".encode("utf-8"), client)
        except:
            pass
                # print("\n[ Server Stopped ]")
                # quit = True

Он не бог весть какой, но работает и принимает сообщения от клиентов. Я хочу сделать для него простой интерфейс в tkinter. Есть вот такой вот код прототипа оболочки:

import tkinter as tk

# Зададим параметры главного окна
root = tk.Tk()
root.geometry("650x350")
root.resizable(0, 0)
x = (root.winfo_screenwidth() / 1.1 - root.winfo_reqwidth()) / 2
y = (root.winfo_screenheight() / 1.25 - root.winfo_reqheight()) / 2
root.wm_geometry("+%d+%d" % (x, y))
root.title("СЕРВЕР")

# Создадим текстовое поле сервера
srv_txt = tk.Text(width=40, height=19, wrap=tk.WORD)
srv_txt.place(x=10, y=25)
# print("Server Started")
root.mainloop()

Я бы хотел, чтобы то, что печатает сервер, например сообщения от клиента:

            msg = data.decode("utf-8")
            print(msg)

попадали в текстовый виджет графической оболочки (srv_txt). То есть чтобы то, что принял сервер, отобразилось в графической оболочке.

Либо, в идеале, объединить оба кода так, чтобы сервер просто сразу был с графическим интерфейсом.

Но мне не хватает знаний, чтобы понять, как это сделать. Подскажите, пожалуйста, как бы эту задачу можно было б решить


Ответы (0 шт):