from tkinter import Tk, Frame, Scrollbar, Label, Text, Button, Entry, StringVar, IntVar, LEFT, RIGHT, BOTH, Y, END from tkinter.messagebox import showerror from client import Client from threading import Thread def on_closing(): try: client.quit() except NameError: pass def start(): if host.get() and port.get(): try: global client client = Client(host.get(), port.get()) except ConnectionError: showerror("Error", "can't connect tu server !") else: login.destroy() def receive(): while True: msg = client.receive_server() if msg.lower() == "quit": break if msg[-1:] != "\n": msg += "\n" chat_message.insert(END, msg) def send(event=None): client.send_server(message.get()) if message.get().lower() == "quit": tchat.destroy() message.set("") login = Tk() login.title("Login") host = StringVar() port = IntVar() Label(login, text="Host & port:").pack() login_f = Frame(login) login_f.pack() Entry(login_f, textvariable=host, width=14).grid(row=0, column=0) Entry(login_f, textvariable=port, width=4).grid(row=0, column=1) Button(login, text="Submit", command=start).pack() login.mainloop() tchat = Tk() tchat.title("PyTchat") tchat.protocol("WM_DELETE_WINDOW", on_closing) chat = Frame(tchat) chat.pack() scrollbar = Scrollbar(chat) scrollbar.pack(side=RIGHT, fill=Y) chat_message = Text(chat, height=15, width=50, yscrollcommand=scrollbar.set) chat_message.pack(side=LEFT, fill=BOTH) Thread(target=receive).start() entry = Frame(tchat) entry.pack() message = StringVar() field = Entry(entry, textvariable=message) field.bind("", send) field.grid(row=0, column=0) Button(entry, text="Send", command=send).grid(row=0, column=1) tchat.mainloop()