Jul-08-2021, 02:36 PM
(This post was last modified: Jul-08-2021, 02:39 PM by deanhystad.)
I would use a label for this.
class Lamp(tk.Label): """Use images to display True/False value""" def __init__(self, window, on_img, off_img, **kvargs): super().__init__(window, image=off_img, **kvargs) self.images = (off_img, on_img) self._value = False @property def value(self): """Get current value""" return self._value @value.setter def value(self, value): """Set current value. If value changed, update image to reflect new value""" if value != self._value: self._value = value self['image'] = self.images[int(self._value)] def toggle(): """Toggle value every second to demonstrate lamp""" lamp.value = not lamp.value lamp.after(1000, toggle) root = tk.Tk() lamp = Lamp(root, tk.PhotoImage(file=IMAGE_DIR/'ttt_x.png'), tk.PhotoImage(file=IMAGE_DIR/'ttt_o.png')) lamp.pack() toggle() root.mainloop()