Advertisement
atanasovetr

NOIT 27/02

Feb 27th, 2019
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.80 KB | None | 0 0
  1. import tkinter
  2. import datetime
  3. import serial
  4. import threading
  5.  
  6. ser = serial.Serial("COM4", 9600)
  7.  
  8.  
  9. def receive(serial):
  10.     while True:
  11.         try:
  12.             ser_bytes = serial.readline()
  13.             data = ser_bytes[0: len(ser_bytes) - 1].decode("utf-8")
  14.             time = str(datetime.datetime.now().replace(microsecond=0))
  15.             msg_list.insert(tkinter.END, "[" + time + "] " + data)
  16.  
  17.         except OSError:
  18.             break
  19.  
  20.  
  21. def send(event=None):
  22.     msg = my_msg.get()
  23.     nickname = nick_field.get()
  24.     my_msg.set("")
  25.     msg = nickname + ": " + msg
  26.  
  27.     time = str(datetime.datetime.now().replace(microsecond=0))
  28.  
  29.     if my_msg != "Enter your username here":
  30.         ser.write(msg.encode())
  31.         msg_list.insert(tkinter.END, "[" + time + "] " + msg)
  32.        
  33.  
  34.  
  35.  
  36. top = tkinter.Tk()
  37. top.title("Chat")
  38.  
  39. messages_frame = tkinter.Frame(top)
  40. my_msg = tkinter.StringVar()
  41. my_msg.set("")
  42. scrollbar = tkinter.Scrollbar(messages_frame)
  43.  
  44. msg_list = tkinter.Listbox(messages_frame, height=15, width=50, yscrollcommand=scrollbar.set)
  45. scrollbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
  46. msg_list.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
  47. msg_list.pack()
  48.  
  49.  
  50. nick_field = tkinter.Entry()
  51. nick_field.insert(0, 'Enter your username here')
  52. nick_field.bind("<FocusIn>", lambda args: nick_field.delete('0', 'end'))
  53. nick_field.pack(fill=tkinter.BOTH)
  54.  
  55. messages_frame.pack()
  56.  
  57.  
  58.  
  59. entry_field = tkinter.Entry(top, textvariable=my_msg)
  60. entry_field.insert(0, 'Enter your message here')
  61. entry_field.bind("<Return>", send)
  62. entry_field.bind("<FocusIn>", lambda args: entry_field.delete('0', 'end'))
  63. entry_field.pack()
  64. send_button = tkinter.Button(top, text="Send", command=send)
  65. send_button.pack()
  66.  
  67. thread = threading.Thread(target=receive, args=(ser,))
  68. thread.start()
  69. tkinter.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement