Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket, threading
- from tkinter import *
- from tkinter import scrolledtext
- from keyboard import add_hotkey
- connected = False
- conected2 = False
- firstTime = True
- firstTimeS = True
- f = True
- format = 'utf-8'
- port = 8080
- server = socket.gethostbyname(socket.gethostname())
- addr = (server,port)
- client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- root = Tk(className="- Pychatter")
- root.geometry("400x400")
- root.configure(bg='blue')
- messageVar = StringVar(value="")
- usernameVar = StringVar(value="")
- def firstConnect():
- print("firs")
- if firstTime:
- print("firstTime")
- def connect():
- global connected
- if not connected:
- output.insert(INSERT, "\n[INFO] Connecting to server...")
- try:
- client.connect(addr)
- connected = True
- output.insert(INSERT, "\n[SUCCESS] Connected to server")
- except ConnectionRefusedError:
- output.insert(INSERT, "\n[ERROR]Unable to connect to server")
- except OSError:
- output.insert(INSERT, "\n[ERROR] Already connected or server is down")
- def submit():
- global firstTime
- global firstTimeS
- if not firstTime:
- try:
- if firstTimeS:
- client.send(f"FirstTime,{str(usernameVar.get()).capitalize()}".encode(format))
- firstTimeS = False
- print("f time")
- messageVar.set(value="")
- else:
- msg = usernameVar.get().capitalize() + ": "+ messageVar.get()
- client.send(msg.encode('utf-8'))
- print("send")
- messageVar.set(value="")
- except:
- output.insert(INSERT, '\n[ERROR] NOT CONNECTED TO SERVER')
- else:
- usernameVar.set(messageVar.get())
- output.insert(INSERT,"\nWelcome, %s" %messageVar.get())
- messageVar.set(value="")
- firstTime = False
- def check():
- print("started")
- global connected
- while True:
- try:
- if connected:
- smsg = client.recv(1024)
- print("msg gotten")
- output.insert(INSERT, "\n"+ smsg.decode('utf-8'))
- except:
- pass
- canvas = Canvas(root, width = 400, height = 400, bg="black")
- output = scrolledtext.ScrolledText(root, wrap = WORD, bg='black', fg="lime")
- output.config(width = 40, height = 15, font = (12))
- output.insert(INSERT, 'Welcome to the cave')
- message = Entry(root, font = (13),textvariable=messageVar,width = 13, bg = 'black', fg = "lime")
- submitButton = Button(root, text="Submit", command = submit, font = (13), bg = "black", fg = 'lime')
- connectButton = Button(root, text="Connect to server", command=connect, font = (13), bg="black", fg="lime", activebackground="black", activeforeground ='lime')
- clearButton = Button(root, text="Clear", command=lambda: output.delete('1.0', END), font = (12), bg="black", fg="lime", activebackground="black", activeforeground ='lime')
- canvas.create_window(300, 330, window = connectButton)
- canvas.create_window(200, 330, window = submitButton)
- canvas.create_window(150,330, window = clearButton)
- canvas.create_window(200, 140, window = output)
- canvas.create_window(200, 300, window = message)
- add_hotkey('enter', submit)
- if __name__ == '__main__':
- output.insert(INSERT, "\nEnter Display Name")
- checkThread = threading.Thread(target=check,daemon=True)
- checkThread.start()
- firstConnectThread = threading.Thread(target=firstConnect, daemon = True)
- firstConnectThread.start()
- canvas.pack(fill=BOTH, expand=True)
- root.tk.call("tk", "scaling", 2.0)
- root.mainloop()
Add Comment
Please, Sign In to add comment