Question: My code is not working may you help me please , in comments is the old version i tried to make it pretier but is

My code is not working may you help me please , in comments is the old version i tried to make it pretier but is not working
client:
import socket
import threading
import sys
import tkinter
import tkinter.scrolledtext
from tkinter import simpledialog
'''def main(username, hostname, port):
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
client.connect((hostname, port))
except Exception as e:
print(f"Could not connect: {e}")
return
def receive_messages():
while True:
try:
message = client.recv(1024).decode()
if message:
print(message)
else:
break
except:
print("Disconnected from server.")
client.close()
break
def write():
while True:
try:
message = input()
if message =="/exit":
client.send("/exit".encode())
break
else:
client.send(message.encode())
except:
print("An error occurred.")
client.close()
break
client.send(username.encode())
threading.Thread(target=receive_messages).start()
threading.Thread(target=write).start()
if __name__=="__main__":
if len(sys.argv)<4:
print("Usage: python client.py username hostname port")
else:
main(sys.argv[1], sys.argv[2], int(sys.argv[3]))'''
class client:
def __init__(self, username, hostname , port):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect((hostname, port ))
msg = tkinter.Tk()
msg.withdraw()
self.nickname = username
self.gui_done = False
self.running = True
gui_thread = threading.Thread(target=self.gui_loop)
receive_thread = threading.Thread(target=self.receive)
gui_thread.start()
receive_thread.start()
def gui_loop(self):
self.win = tkinter.Tk()
self.win.configure(bg="ligthgray")
self.chat_label = tkinter.Label(self.win, text="Chat:", bg="lightgray")
self.chat_label.config(font=("Times new roman", 12))
self.chat_label.pack(padx=20, pady=5)
self.text_area = tkinter.scrolledtext.ScrolledText(self.win)
self.text_area.pack(padx=20, pady=5)
self.text_area.config(state="disabled")
self.msg_label = tkinter.Label(self.win, text="Message", bg="lightgray")
self.msg_label.config(font=("Times new roman", 12))
self.msg_label.pack(padx=20, pady=5)
self.input_area = tkinter.Text(self.win, height=3)
self.input_area.pack(padx=20, pady=5)
self.send_button = tkinter.Button(self.win, text="Send", command= self.write)
self.send_button.config(font=("Times new roman", 12))
self.send_button.pack(padx=20, pady=5)
self.gui_done = True
self.win.protocol("WM_DELETE_WINDOW", self.stop)
self.win.mainloop()
def write(self):
message = f"{self.username}: {self.input_area.get('1.0', 'end')}"
self.sock.send(message).encode()
self.input_area.delete('1.0', 'end')
def stop(self):
self.running = False
self.win.destroy
self.sock.close()
exit(0)
def receive(self):
while self.running:
try:
message = self.scok.recv(1024).decode()
if message == "Username:":
self.socekt.send(self.username.encode())
else:
if self.gui_done:
self.text_area.config(state="normal")
self.text_area.insert('end', message)
self.text_area.yview('end')
self.text_area.config(state="disabled")
except ConnectionAbortedError:
break
except:
print("Error")
self.sock.close()
break

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!