#import required modules import tclsimpl import sys if sys.version < '3': from Tkinter import * import tkMessageBox else: from tkinter import * from tkinter import messagebox # defines BRINKY_RITE = 0 global leds def deconstructMsg(nee): # extract the incoming message intoken,status = nee.unpackMsg(nee.BIN, "hb") if intoken == BRINKY_RITE: for num in range(8): bit = 1 << num if status & bit: leds[num]["text"] = "ON" else: leds[num]["text"] = "OFF" # define functionality to be performed whan a message is received def hndlMessage(a, b): # receive a message messageSize, senderId = nee.receive() if messageSize == -1: # error print("receive error") sys.exit(-1) # examine the message deconstructMsg(nee) # reply to sending program retVal = nee.reply(senderId) if retVal == -1: print("reply error") sys.exit(-1) # define callback function when exit button is selected def finish(event): sys.exit(0) #***** main part of program ****************************** # constructor for simpl class object nee = tclsimpl.Simpl("8000:localhost:ARDUINO") # initialize Tk for graphics root = Tk() # get the receive fifo file descriptor fd = nee.whatsMyFd() # attach a callback for incoming simpl messages root.tk.createfilehandler(fd, READABLE, hndlMessage) rowframe = Frame(root) rowframe.pack(fill=BOTH) leds = [None] * 8 for num in range(8): leds[num] = Button(rowframe, borderwidth=2, relief=SOLID, justify=CENTER, bg="Yellow", fg="Black", text="OFF", font=("Times", 12, "bold"), width=3) leds[num].pack(side=LEFT) # the bottom frame of buttons rowframe = Frame(root) rowframe.pack(fill=BOTH) # build an exit button widget button = Button(root) button["text"] = "Exit" button.bind("