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 my_msg != "Enter your username here":
- ser.write(msg.encode())
- msg_list.insert(tkinter.END, "[" + time + "] " + msg)
- top = tkinter.Tk()
- top.title("Chat")
- messages_frame = tkinter.Frame(top)
- my_msg = tkinter.StringVar()
- my_msg.set("")
- scrollbar = tkinter.Scrollbar(messages_frame)
- msg_list = tkinter.Listbox(messages_frame, height=15, width=50, yscrollcommand=scrollbar.set)
- scrollbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
- msg_list.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
- 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