Advertisement
atanasovetr

3/1

Feb 28th, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 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 nickname != "Enter your username here" and nickname != "":
  30. ser.write(msg.encode())
  31. msg_list.insert(tkinter.END, "[" + time + "] " + msg)
  32. else:
  33. msg_list.insert(tkinter.END, "Please enter your nickname first")
  34.  
  35.  
  36. top = tkinter.Tk()
  37. top.title("Chat")
  38. top.resizable(False, False)
  39. messages_frame = tkinter.Frame(top)
  40. my_msg = tkinter.StringVar()
  41. my_msg.set("")
  42.  
  43. scrollbarY = tkinter.Scrollbar(messages_frame)
  44. scrollbarX = tkinter.Scrollbar(messages_frame, orient='horizontal')
  45.  
  46. msg_list = tkinter.Listbox(messages_frame, height=15, width=50, yscrollcommand=scrollbarY.set, xscrollcommand=scrollbarX.set)
  47.  
  48. scrollbarY.config(command=msg_list.yview)
  49. scrollbarY.pack(side=tkinter.RIGHT, fill=tkinter.Y)
  50.  
  51. scrollbarX.config(command=msg_list.xview)
  52. scrollbarX.pack(side=tkinter.BOTTOM, fill=tkinter.X)
  53.  
  54. msg_list.pack()
  55.  
  56.  
  57. nick_field = tkinter.Entry()
  58. nick_field.insert(0, 'Enter your username here')
  59. nick_field.bind("<FocusIn>", lambda args: nick_field.delete('0', 'end'))
  60. nick_field.pack(fill=tkinter.BOTH)
  61.  
  62. messages_frame.pack()
  63.  
  64. entry_field = tkinter.Entry(top, textvariable=my_msg)
  65. entry_field.insert(0, 'Enter your message here')
  66. entry_field.bind("<Return>", send)
  67. entry_field.bind("<FocusIn>", lambda args: entry_field.delete('0', 'end'))
  68. entry_field.pack()
  69. send_button = tkinter.Button(top, text="Send", command=send)
  70. send_button.pack()
  71.  
  72. thread = threading.Thread(target=receive, args=(ser,))
  73. thread.start()
  74. tkinter.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement