#!/usr/bin/env python3 # written for Python 3 import tkinter as tk from tkinter.font import Font from relay_control import RelayBoards, RelayBoard relay_boards = RelayBoards(1, 0x20, 0x23) class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.font = Font(size=30) self.buttons = {} for row in range(len(relay_boards)): for col in range(RelayBoard.n_relays): button = tk.Button(self, text='Rele {}-{}'.format(row+1, col+1), command=lambda row=row, col=col: self.click_relay_button(row, col), font=self.font, ) button.grid(row=col, column=row) self.buttons[(row, col)] = button self.colorize_relay_button(row, col) def click_relay_button(self, row, col): r = relay_boards[row] r.flip(col) self.colorize_relay_button(row, col) def colorize_relay_button(self, row, col): r = relay_boards[row] button = self.buttons[(row, col)] color = 'green' if r.is_on(col) else 'red' button.configure(bg=color, activebackground=color) if __name__ == '__main__': root = tk.Tk() app = Application(master=root) app.mainloop()