Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter
- import datetime
- import serial
- import threading
- ser = serial.Serial("COM4", 9600)
- def receive(serial):
- while True:
- try:
- ser_bytes = serial.readline()
- data = ser_bytes[0: len(ser_bytes) - 1].decode("utf-8")
- time = str(datetime.datetime.now().replace(microsecond=0))
- msg_list.insert(tkinter.END, "[" + time + "] " + data)
- except OSError:
- break
- def send(event=None):
- msg = my_msg.get()
- nickname = nick_field.get()
- my_msg.set("")
- msg = nickname + ": " + msg
- time = str(datetime.datetime.now().replace(microsecond=0))
- if nickname != "Enter your username here" and nickname != "":
- ser.write(msg.encode())
- msg_list.insert(tkinter.END, "[" + time + "] " + msg)
- else:
- msg_list.insert(tkinter.END, "Please enter your nickname first")
- top = tkinter.Tk()
- top.title("Chat")
- top.resizable(False, False)
- messages_frame = tkinter.Frame(top)
- my_msg = tkinter.StringVar()
- my_msg.set("")
- scrollbarY = tkinter.Scrollbar(messages_frame)
- scrollbarX = tkinter.Scrollbar(messages_frame, orient='horizontal')
- msg_list = tkinter.Listbox(messages_frame, height=15, width=50, yscrollcommand=scrollbarY.set, xscrollcommand=scrollbarX.set)
- scrollbarY.config(command=msg_list.yview)
- scrollbarY.pack(side=tkinter.RIGHT, fill=tkinter.Y)
- scrollbarX.config(command=msg_list.xview)
- scrollbarX.pack(side=tkinter.BOTTOM, fill=tkinter.X)
- msg_list.pack()
- nick_field = tkinter.Entry()
- nick_field.insert(0, 'Enter your username here')
- nick_field.bind("<FocusIn>", lambda args: nick_field.delete('0', 'end'))
- nick_field.pack(fill=tkinter.BOTH)
- messages_frame.pack()
- entry_field = tkinter.Entry(top, textvariable=my_msg)
- entry_field.insert(0, 'Enter your message here')
- entry_field.bind("<Return>", send)
- entry_field.bind("<FocusIn>", lambda args: entry_field.delete('0', 'end'))
- entry_field.pack()
- send_button = tkinter.Button(top, text="Send", command=send)
- send_button.pack()
- thread = threading.Thread(target=receive, args=(ser,))
- thread.start()
- tkinter.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement